15 commandes Docker pour gérer les conteneurs [List, Stop, Start, Remove and More]

Publié: 2021-08-17

Docker est un outil populaire pour créer et exécuter des applications conteneurisées. Il est disponible pour plusieurs plates-formes et utilisé comme l'une des technologies de conteneur back-end dans 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.

La gestion des conteneurs Docker est l'un des aspects les plus importants à prendre en compte en tant qu'administrateur système qui gère les hôtes/conteneurs Docker.

Dans cet article, nous nous concentrerons sur la gestion des conteneurs à l'aide de la commande docker.

exécuter la commande

La commande docker run est utilisée pour exécuter un conteneur à partir d'une image en spécifiant l' Image ID ou le nom du Repository et/ou de la Tag .

 $ docker run {image}

Exemple:

 $ docker run nginx

La commande ci-dessus exécute une instance de l' application <span class="NormalTextRun SpellingErrorV2 SCXW251451022 BCX0">nginx</span> sur un hôte docker, si elle existe déjà. S'il n'existe pas sur l'hôte Docker, il sort vers le hub Docker (par défaut) et extrait 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.

Si vous souhaitez exécuter une version particulière d'une image, spécifiez sa version séparée par deux points. Ceci est connu sous le nom de Tag . Si vous ne spécifiez aucune balise, docker la considérera par défaut comme la plus récente.

De plus, si vous souhaitez exécuter le conteneur en arrière-plan en mode détaché afin de revenir à l'invite après le lancement du conteneur par Docker, utilisez l'indicateur -d .

Exemple:

 $ 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

La commande docker ps répertorie tous les conteneurs en cours d'exécution et quelques informations de base à leur sujet. Comme l'ID du conteneur, le nom de l'image, l'heure à laquelle le conteneur est créé, l'état actuel et le nom du conteneur. Chaque conteneur reçoit un nom aléatoire (s'il n'est pas spécifié explicitement) et un ID.

Exemple:

 $ 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

Exemple:

 $ 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 la commande ps , ls peut également être utilisé pour répertorier les conteneurs. -a indicateur peut être utilisé pour lister tous les conteneurs (pas seulement ceux en cours d'exécution).

 $ docker container ls

Exemple:

 $ 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

La commande docker stop 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 menu fixe.

Exemple:

 $ 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 l' 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 acceptera jusqu'à la pièce, ce qui le rend unique parmi les autres conteneurs en cours d'exécution, car Docker sait quel conteneur arrêter.

Commande rm

La commande docker rm supprime un conteneur arrêté ou quitté.

 $ docker rm {CONTAINER NAME or ID}

Exemple:

 $ docker rm 133f5 133f5 $

Commande exec

Nous pouvons utiliser la commande exec pour entrer dans un conteneur en cours d'exécution. Ceci est utile pour déboguer des conteneurs en cours d'exécution ou faire certaines choses dans un conteneur.

 $ docker exec –it {container} {command}

Exemple:

Supposons que vous souhaitiez lancer un shell bash (en supposant que l'image dispose de Bash, vous pouvez également utiliser d'autres shells disponibles) dans un conteneur nommé unruffled_meninsky en mode interactif, utilisez :

 $ docker exec –it unruffled_meninsky /bin/bash

Cela devrait vous faire atterrir à l'intérieur du conteneur sur un shell bash . Ici, le drapeau -i représente le mode interactif et -t le terminal. 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

commande logs

Dans le cas où un conteneur est lancé en mode détaché et que nous souhaitons voir ses journaux, nous pouvons utiliser la commande logs pour consulter ses journaux :

 $ docker logs {CONTAINER NAME or ID}

Exemple:

 $ 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 $

cp Commande

Pour copier des fichiers entre un conteneur et un système de fichiers localhost, vous pouvez utiliser la commande cp .

 $ docker container cp {CONTAINER NAME or ID:SRC_PATH} {DEST_PATH}|-

Exemple:

 $ docker container cp quirky_cray:/etc/nginx/nginx.conf nginx.conf.bkp

Commande d'exportation

La commande de conteneur Docker offre une option pour exporter le système de fichiers d'un conteneur sous forme de fichier TAR.

 $ docker container export {CONTAINER NAME or ID}

inspecter la commande

Nous pouvons vérifier des informations détaillées sur un conteneur à l'aide de la commande inspect comme :

 $ docker inspect {CONTAINER NAME or ID}

OU

$ docker container inspect {CONTAINER NAME or ID}

tuer la commande

Un conteneur en cours d'exécution peut être tué à l'aide de la commande kill avec un indicateur optionnel --signal ou -s . Plusieurs conteneurs peuvent être spécifiés pour les tuer en une seule fois.

 $ docker kill {CONTAINER NAME or ID} [--signal VAL]

Exemple:

 $ 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 la commande stats :

 $ docker container stats {CONTAINER NAME or ID}

Exemple:

 $ 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 supérieure

Comme la commande top sous Linux, nous pouvons l'utiliser avec Docker pour obtenir une liste des processus en cours d'exécution.

 $ docker container top {CONTAINER NAME or ID}

Exemple:

 $ 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 la commande rename .

 $ docker container rename {OLD CONTAINER NAME} {NEW CONTAINER NAME}

Exemple:

 $ 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 inspecter les modifications apportées aux fichiers ou aux répertoires sur le système de fichiers d'un conteneur avec la commande diff .

 $ docker container diff {CONTAINER NAME or ID}

Exemple:

 $ 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 $

Sommaire

Pour conclure, Doker propose un ensemble complet de commandes pour gérer les conteneurs de leur création à leur destruction. Nous avons couvert certaines des 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-unes des ressources pour apprendre DevOps.