15 commandes Docker pour gérer les conteneurs [Liste, Arrêter, Démarrer, Supprimer et plus]

Docker is a popular tool to build and run containerized applications. It is available for multiple platforms and used as one of the back-end container technologies in Kubernetes.
Dans Docker, soit vous créez vos propres images pour exécuter votre application en tant que conteneur, soit vous pouvez extraire et utiliser des milliers d'images publiques du référentiel Docker et les utiliser dans votre projet. Une fois que votre image est prête, vous pouvez lancer vos conteneurs en utilisant ces images. Un conteneur est une instance en cours d'exécution d'une image Docker.
Gérant Docker conteneurs est l'un des aspects les plus importants à surveiller en tant qu'administrateur système qui gère les hôtes/conteneurs Docker.
Dans cet article, nous allons nous concentrer sur gestion des conteneurs à l'aide de docker commander.
exécuter la commande
docker run
La commande est utilisée pour exécuter un conteneur à partir d'une image en spécifiant le Image ID
au sein de l’ Repository
(facultatif) Tag
nom.
$ docker run {image}
Mise en situation :
$ docker run nginx
La commande ci-dessus exécute une instance de <span class="NormalTextRun SpellingErrorV2 SCXW251451022 BCX0">nginx</span>
application sur un hôte docker, s'il existe déjà. S'il n'existe pas sur l'hôte Docker, il sort vers le hub docker (par défaut) et tire l'image vers le bas. Mais cela se fait la seule première fois. Pour les fois suivantes, la même image est réutilisée.
If you want to run a particular version of an image, specify its version separated by a colon. This is known as Tag
. In case you don’t specify any tag, docker will consider it by default as the latemorceaux.
De plus, si vous souhaitez exécuter le conteneur en arrière-plan en mode détaché afin de revenir à l'invite une fois que Docker a lancé le conteneur, utilisez -d
drapeau.
Mise en situation :
$ docker run nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
33847f680f63: Pull complete
dbb907d5159d: Pull complete
8a268f30c42a: Pull complete
b10cf527a02d: Pull complete
c90b090c213b: Pull complete
1f41b2f2bf94: Pull complete
Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
Status: Downloaded newer image for nginx:latest
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2021/08/15 12:13:23 [notice] 1#1: using the "epoll" event method
2021/08/15 12:13:23 [notice] 1#1: nginx/1.21.1
2021/08/15 12:13:23 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6)
2021/08/15 12:13:23 [notice] 1#1: OS: Linux 5.8.0-1039-azure
2021/08/15 12:13:23 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2021/08/15 12:13:23 [notice] 1#1: start worker processes
2021/08/15 12:13:23 [notice] 1#1: start worker process 33
2021/08/15 12:13:23 [notice] 1#1: start worker process 34
Commande ps
docker ps
command lists all running containers and some basic information about them. Like container ID, name of image, time container is created, current status, and name of the container. Each container gets a random name (if not specified explicitly) and ID.
Mise en situation :
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
133f5e0267a5 nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp jolly_elion
Pour répertorier tous les conteneurs en cours d'exécution et non en cours d'exécution/sortis à la fois, vous pouvez utiliser :
$ docker ps -a
Mise en situation :
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcec129f0eb4 nginx "/docker-entrypoint.…" 46 hours ago Exited (0) 46 hours ago interesting_ishizaka
6e8b1e441aa6 hello-world "/hello" 2 days ago Exited (0) 2 days ago keen_shirley
Commande ls
Comme ps
commander, ls
peut également être utilisé pour répertorier les conteneurs. -a
flag peut être utilisé pour répertorier tous les conteneurs (pas seulement ceux en cours d'exécution).
$ docker container ls
Mise en situation :
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15796e91c30b redis "docker-entrypoint.s…" 2 seconds ago Up 1 second 6379/tcp flamboyant_neumann
904390b65d45 nginx "/docker-entrypoint.…" 14 minutes ago Up 14 minutes 80/tcp nginx_new
$
Commande d'arrêt
docker stop
La commande est utilisée pour arrêter un conteneur en cours d'exécution. Ici, nous devons mettre le nom ou l'ID du conteneur avec cela.
$ docker stop {container-id}
En cas de succès, il renverrait le nom ou l'ID du docker.
Mise en situation :
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
133f5e0267a5 nginx "/docker-entrypoint.…" 50 seconds ago Up 49 seconds 80/tcp jolly_elion
Cela renverra le CONTAINER ID
que vous pouvez utiliser pour arrêter le conteneur.
$ docker stop 133f5
133f5
Pour cet exemple et les suivants, notez que vous n'avez pas besoin de spécifier une valeur complète de CONTAINER ID
. Il accepte jusqu'à la partie, ce qui le rend unique parmi les autres conteneurs en cours d'exécution, car Docker sait quel conteneur arrêter.
Commande rm
docker rm
La commande supprime un conteneur arrêté ou quitté.
$ docker rm {CONTAINER NAME or ID}
Mise en situation :
$ docker rm 133f5
133f5
$
Exécuter la commande
Nous pouvons utiliser exec
commande pour entrer dans un conteneur en cours d'exécution. C'est utile pour déboguer des conteneurs en cours d'exécution ou faire des choses dans un conteneur.
$ docker exec –it {container} {command}
Mise en situation :
Supposons que vous vouliez lancer bash
shell (assuming the image has Bash available, you can use other available shells as well) within a container named unruffled_meninsky
en mode interactif, utilisez :
$ docker exec –it unruffled_meninsky /bin/bash
Cela devrait vous atterrir à l'intérieur du conteneur sur un bash
coquille. Ici le drapeau -i
signifie mode interactif et -t
pour la borne. Si vous souhaitez simplement exécuter une ou plusieurs commandes et sortir du conteneur, vous pouvez utiliser :
$ docker exec unruffled_meninsky cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 cd2eed4acf34
Logs Commande
Dans le cas où un conteneur est lancé en mode détaché et que nous souhaitons voir ses journaux, nous pouvons utiliser logs
commande à review its logs:
$ docker logs {CONTAINER NAME or ID}
Mise en situation :
$ docker logs 7da6dcebaf9c
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2021/08/15 12:14:09 [notice] 1#1: using the "epoll" event method
2021/08/15 12:14:09 [notice] 1#1: nginx/1.21.1
2021/08/15 12:14:09 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6)
2021/08/15 12:14:09 [notice] 1#1: OS: Linux 5.8.0-1039-azure
2021/08/15 12:14:09 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2021/08/15 12:14:09 [notice] 1#1: start worker processes
2021/08/15 12:14:09 [notice] 1#1: start worker process 31
2021/08/15 12:14:09 [notice] 1#1: start worker process 32
$
Commande cp
Pour copier des fichiers entre un conteneur et le système de fichiers localhost, vous pouvez utiliser cp
commander.
$ docker container cp {CONTAINER NAME or ID:SRC_PATH} {DEST_PATH}|-
Mise en situation :
$ docker container cp quirky_cray:/etc/nginx/nginx.conf nginx.conf.bkp
Exporter la commande
La commande de conteneur Docker offre une option pour exporter le système de fichiers d'un conteneur en tant que fichier TAR.
$ docker container export {CONTAINER NAME or ID}
inspect Command
Nous pouvons vérifier des informations détaillées sur un conteneur en utilisant inspect
commande comme:
$ docker inspect {CONTAINER NAME or ID}
OR
$ docker container inspect {CONTAINER NAME or ID}
tuer la commande
Un conteneur en cours d'exécution peut être tué en utilisant kill
commande avec une option --signal
or -s
drapeau. Plusieurs conteneurs peuvent être spécifiés pour les tuer en une seule fois.
$ docker kill {CONTAINER NAME or ID} [--signal VAL]
Mise en situation :
$ docker kill cd9005a0b5d2 -s 9
cd9005a0b5d2
$
Commande de statistiques
Pour afficher un flux en direct de l'utilisation des ressources d'un conteneur, vous pouvez utiliser stats
commander:
$ docker container stats {CONTAINER NAME or ID}
Mise en situation :
$ docker container stats thirsty_volhard
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
904390b65d45 thirsty_volhard 0.00% 3.406MiB / 7.775GiB 0.04% 1.02kB / 0B 0B / 8.19kB 3
commande top
Comme top
command in Linux, we can use it with Docker to get a list of running processpar exemple.
$ docker container top {CONTAINER NAME or ID}
Mise en situation :
$ docker container top thirsty_volhard
UID PID PPID C STIME TTY TIME CMD
root 2603 2582 0 12:34 ? 00:00:00 nginx: master process nginx -g daemon off;
systemd+ 2659 2603 0 12:34 ? 00:00:00 nginx: worker process
systemd+ 2660 2603 0 12:34 ? 00:00:00 nginx: worker process
$
renommer la commande
Pour renommer un conteneur existant, utilisez rename
commander.
$ docker container rename {OLD CONTAINER NAME} {NEW CONTAINER NAME}
Mise en situation :
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_container
$ docker container rename nginx_container nginx_new
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_new
$
Commande diff
Nous pouvons inspect changes to files or directories on a container’s filesystem with diff
commander.
$ docker container diff {CONTAINER NAME or ID}
Mise en situation :
$ docker container diff nginx_new
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/uwsgi_temp
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
A /var/cache/nginx/scgi_temp
C /etc
C /etc/nginx
C /etc/nginx/conf.d
C /etc/nginx/conf.d/default.conf
C /run
A /run/nginx.pid
$
Résumé
To conclude, Doker offers an extensive set of commands to manage containers from their creation to destruction. We’ve covered some of the commandes importantes et leur utilisation dans cet article qui devrait vous donner une bonne idée de la gestion des conteneurs docker.
Ensuite, découvrez quelques-uns des ressources pour apprendre DevOps.