Ayant des problèmes avec l’arrêt des conteneurs Docker ? Trouver la manière correcte d’arrêter un conteneur peut être difficile avec la possibilité de créer de nombreux conteneurs différents. Dans cet article, vous apprendrez les commandes Docker pour arrêter un conteneur ou tous les conteneurs.
Continuez à lire pour en savoir plus !
Prérequis
Pour suivre ce tutoriel, assurez-vous d’avoir les éléments suivants :
- Windows 10 – Le tutoriel utilise Windows pour exécuter Docker, mais vous pouvez également appliquer les mêmes étapes générales sous Linux ou macOS.
- Docker Desktop – Ce tutoriel utilise la version 3.5.2. Le moteur Docker est disponible si vous êtes sur Linux car l’interface graphique ne l’est pas.
- A running Docker container or containers.
Arrêt des Conteneurs avec la Commande docker stop
Commençons avec la première commande : la commande docker stop
et comment elle permet d’arrêter des conteneurs.
Par exemple, peut-être avez-vous besoin d’arrêter un conteneur en cours d’exécution avec le nom mystifying_hofstadter
et un ID de fb66ed502096
. Comme le montre l’exemple ci-dessous, arrêtez le conteneur avec la commande docker stop
.

Que faire si vous avez plusieurs conteneurs en cours d’exécution et que vous souhaitez les arrêter? La commande docker stop
prend en charge l’arrêt de plusieurs IDs de conteneurs, un à la fois.
Tout d’abord, répertoriez tous les conteneurs via la commande docker ps
et transmettez les IDs des conteneurs à la commande docker stop
, comme indiqué ci-dessous.

Que faire si vous souhaitez arrêter tous les conteneurs en cours d’exécution sans récupérer manuellement les IDs des conteneurs et les transmettre à docker stop
? La commande docker ps -q
accomplira cela. Le paramètre -q
de la commande docker ps
ne renvoie que les IDs des conteneurs.

La construction
$(docker ps -q)
ci-dessus est une sous-expression à la fois dans Bash sur Linux et PowerShell sur Windows. Une sous-expression indique à l’interpréteur de traiter un ensemble de commandes,docker ps -q
, d’abord, puis de renvoyer l’ensemble des résultats à la commande d’originedocker stop
.
La commande docker stop
utilise le signal SIGTERM. Les signaux Linux informent un processus d’un événement, mais c’est au processus de décider comment réagir à un signal donné.
Lors de l’utilisation du signal SIGTERM, Docker utilise le signal pour arrêter gracieusement un processus en attendant une valeur par défaut de 10
secondes avant d’envoyer le signal SIGKILL, qui termine immédiatement le processus.
Arrêt d’un conteneur en utilisant des signaux de processus
Vous avez appris le comportement par défaut de Docker (signal d’arrêt) avec la commande docker stop
lors de l’arrêt d’un conteneur. Mais vous ne voulez peut-être pas le comportement par défaut. Au lieu de cela, vous pouvez indiquer à Docker d’utiliser des signaux d’arrêt alternatifs.
Avec le drapeau --stop-signal
de la commande docker run
, vous pouvez spécifier le signal d’arrêt lors du démarrage du conteneur. Ce drapeau définit le signal qui sera envoyé au conteneur en cours d’exécution lorsque vous voulez l’arrêter.
Dans l’exemple ci-dessous, le drapeau --stop-signal
prend la valeur SIGQUIT
, ce qui indique à Docker d’envoyer le signal SIGQUIT lorsqu’il est temps d’arrêter le conteneur. L’exemple utilise également les paramètres suivants :
d
– Runs the container in detached (background) mode. The detached mode will not allow the container to be immediately interacted with by the user since the process is running in the background.t
– allocates a Pseudo-TTY (PTY) console, which emulates a real terminal console in the container and stops the Ubuntu container from immediately exiting. The Ubuntu container in the example requires a PTY console to stay active in the background.- “nom de l’image” – quelle image Docker utiliser pour provisionner le conteneur, dans ce cas, l’image
ubuntu
.

SIGQUIT
as the signal when starting and then stopping a Docker container. Vous pouvez également spécifier le signal d’arrêt en utilisant un Dockerfile, qui indique à Docker comment construire un conteneur. Vous pouvez ajouter une entrée au Dockerfile spécifiant le signal d’arrêt avec
STOPSIGNAL SIGQUIT
, par exemple. Vous pouvez remplacerSIGQUIT
par n’importe quel signal d’arrêt de votre choix.
Arrêt immédiat des conteneurs avec docker kill
Il y aura des moments où vous voudrez arrêter des conteneurs sans leur accorder de période de grâce. La commande docker kill
arrête immédiatement un conteneur.
L’exemple ci-dessous passe le conteneur avec l’ID 2aa318273db5
à docker kill
. Le conteneur quittera immédiatement via le signal SIGKILL. Le conteneur ne sera pas autorisé à sortir de manière gracieuse. En conséquence de la commande, le conteneur quittera et l’ID du conteneur sera affiché.
Arrêter et supprimer un conteneur avec
docker rm
Par défaut, lorsque vous créez un conteneur, ce conteneur est construit de la même manière qu’auparavant : il est idempotent. Supprimer un conteneur aura un impact minimal, et avec cela à l’esprit, docker rm
peut forcer l’arrêt et la suppression d’un conteneur. Docker envoie un signal SIGKILL
au processus principal et retire le conteneur de la liste des conteneurs disponibles sur votre installation Docker.
Si le conteneur doit conserver les fichiers internes modifiés ou si son état doit être préservé, alors la suppression d’un conteneur détruira ces changements. Attention aux potentielles erreurs !
Dans l’exemple suivant, peut-être avez-vous démarré un conteneur qui a été assigné le nom kind_galileo
. Avant de supprimer un conteneur, celui-ci doit être arrêté, comme indiqué ci-dessous. La commande docker ps -a
affiche le statut Exited
pour l’exemple de conteneur.

Maintenant que le conteneur est arrêté, l’exécution de la commande docker rm
va supprimer le conteneur entièrement.
Au lieu d’arrêter le conteneur pour ensuite le supprimer, la combinaison de --force
et de docker rm
va arrêter et supprimer le conteneur en une seule opération. Le conteneur, laughing_elion
, ne sera plus disponible pour être exécuté.
Si vous ne spécifiez pas la commande
--force
, vous rencontrerez le message d’erreurRéponse d'erreur du démon : Vous ne pouvez pas supprimer un conteneur en cours d'exécution...

Arrêt des Conteneurs Docker avec Docker Compose
Les commandes Docker sont généralement utilisées sur un seul conteneur, mais vous pouvez créer un service avec plusieurs conteneurs travaillant ensemble. L’outil Docker Compose vous permet de configurer un service composé de plusieurs conteneurs pour travailler ensemble.
Étant donné que les conteneurs au sein d’un service sont conçus pour fonctionner ensemble, il est préférable d’arrêter le service lui-même de manière appropriée plutôt que chaque conteneur individuellement.
Si vous avez un service en cours d’exécution avec plusieurs conteneurs, [docker-compose stop]
arrête le service sans supprimer les conteneurs ou le service. Suivez les étapes ci-dessous pour créer un service Docker Compose, démarrer le service et finalement arrêter le service de manière appropriée.
1. Créez un répertoire pour stocker votre fichier de configuration. Dans cet exemple, le répertoire C:\Articles\Ubuntu stockera le fichier.
2. Ensuite, créez le fichier docker-compose.yml contenant la configuration suivante. Le fichier Docker Compose ci-dessous crée un service avec deux conteneurs Ubuntu, et lorsqu’il est démarré, les conteneurs ne se ferment pas immédiatement.
3. Dans une session de terminal, accédez au répertoire de votre fichier de configuration Docker personnalisé, qui dans cet exemple est C:\Articles\Ubuntu. Exécutez la commande docker-compose up -d
pour générer et démarrer le service créé à l’étape précédente en arrière-plan, comme indiqué par l’option -d
.

4. Dans la même session de terminal et le même répertoire, lancez la commande docker-compose stop
pour arrêter le service et les conteneurs de manière élégante.

La commande
docker-compose
, tout comme la commandedocker
, dispose également des paramètresrm --force
etkill
. Les paramètres dedocker-compose
agissent sur le service au lieu d’un seul conteneur. La commandedocker-compose kill
prend également une option-s
pour spécifier le signal d’arrêt.
Conclusion
Les conteneurs Docker sont un outil puissant pour créer des environnements uniques et segmentés pour une utilisation en développement et en production. Dans cet article, vous avez appris plusieurs façons dont Docker arrête un ou plusieurs, voire tous les conteneurs. Vous avez également appris à propos du signal d’arrêt par défaut utilisé par Docker et comment le modifier.
Avec cette connaissance, vous connaissez maintenant les tenants et les aboutissants de l’arrêt des conteneurs Docker et comment ne pas faire d’erreurs lorsqu’il est temps d’arrêter les conteneurs en cours d’exécution. Comment prévoyez-vous d’arrêter vos conteneurs à partir de maintenant, avec cette nouvelle connaissance?
Source:
https://adamtheautomator.com/docker-stop-containers/