Ce didacticiel Docker traite des méthodes permettant d'arrêter un seul conteneur Docker, plusieurs conteneurs Docker ou tous les conteneurs Docker en cours d'exécution en même temps. Vous apprendrez également à arrêter gracieusement un conteneur docker.
Pour arrêter un conteneur Docker, il vous suffit d'utiliser l'ID ou le nom du conteneur de la manière suivante :
docker stop container_ID_or_name
Vous pouvez également utiliser la commande docker container stop container_id_or_name, mais c'est un mot supplémentaire dans la commande et cela n'offre aucun avantage supplémentaire, alors restez avec docker stop.
Mais il y a plus à savoir sur l'arrêt d'un conteneur Docker, surtout si vous êtes un débutant Docker.
Exemples pratiques pour arrêter le conteneur docker

J'aborderai divers aspects de l'arrêt d'un conteneur Docker dans ce didacticiel :
- Arrêter un conteneur Docker
- Arrêter plusieurs conteneurs Docker à la fois
- Arrêter tous les conteneurs Docker avec une certaine image
- Arrêter tous les conteneurs Docker en cours d'exécution
- Arrêter gracieusement un conteneur docker
Avant de voir cela, vous devez savoir comment obtenir le nom ou l'ID du conteneur.
Vous pouvez lister tous les conteneurs docker en cours d'exécution avec le docker ps
commande. Sans aucune option, la commande docker ps affiche uniquement les conteneurs en cours d'exécution.
[email protected]:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bcf775d8cc7 ubuntu "bash" 8 minutes ago Up About a minute container-2
94f92052f55f debian "bash" 10 minutes ago Up 10 minutes container-1
La sortie vous donne également le nom et l'ID du conteneur. Vous pouvez utiliser l'un ou l'autre de ces deux éléments pour arrêter un conteneur.
Passons maintenant à l'arrêt des conteneurs.
1. Arrêter un conteneur Docker
Pour arrêter un conteneur spécifique, utilisez son ID ou son nom avec la commande docker stop :
docker stop container_name_or_ID
Le résultat aurait dû être plus descriptif, mais il affiche simplement le nom ou l'ID du conteneur, selon ce que vous avez fourni :
[email protected]:~$ docker stop 1bcf775d8cc7
1bcf775d8cc7
Vous pouvez utiliser la commande docker stop sur un conteneur déjà arrêté. Il ne générera aucune erreur ou une sortie différente.
Vous pouvez vérifier si le conteneur a été arrêté à l'aide de la commande docker ps -a. L'option -a affiche tous les conteneurs, qu'ils soient en cours d'exécution ou arrêtés.
[email protected]:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bcf775d8cc7 ubuntu "bash" 19 minutes ago Exited (0) About a minute ago container-2
94f92052f55f debian "bash" 29 minutes ago Up 29 minutes container-1
Si le statut est Exited, cela signifie que le conteneur ne fonctionne plus.
2. Arrêter plusieurs conteneurs Docker
Vous pouvez également arrêter plusieurs conteneurs Docker à la fois. Il vous suffit de fournir les noms et ID des conteneurs.
docker stop container_id_or_name_1 container_id_or_name_2 container_id_or_name_3
Comme précédemment, la sortie affichera simplement le nom ou l'ID des conteneurs :
[email protected]:~$ docker stop container-1 container-2 container-3
container-1
container-2
container-3
3. Arrêter tous les conteneurs associés à une image
Jusqu'à présent, ce que vous avez vu arrêter les conteneurs en mentionnant explicitement leur nom ou leur identifiant.
Que faire si vous souhaitez arrêter tous les conteneurs en cours d'exécution d'une certaine image Docker ? Imaginez un scénario dans lequel vous souhaitez supprimer une image Docker, mais vous devrez arrêter tous les conteneurs en cours d'exécution associés.
Vous pouvez fournir les noms ou les identifiants des conteneurs un par un, mais cela prend du temps. Ce que vous pouvez faire, c'est filtrer tous les conteneurs en cours d'exécution en fonction de leur image de base.
Remplacez simplement IMAGE_NAME par le nom de votre image docker et vous devriez pouvoir arrêter tous les conteneurs en cours d'exécution associés à cette image.
docker ps -q --filter ancestor=IMAGE_NAME | xargs docker stop
L'option -q affiche uniquement l'ID du conteneur. Grâce à la merveilleuse commande xargs, ces ID de conteneur sont redirigés vers l'arrêt docker en tant qu'argument.
4. Arrêtez tous les conteneurs Docker en cours d'exécution
Vous pouvez être confronté à une situation où vous devez arrêter tous les conteneurs en cours d'exécution. Par exemple, si vous souhaitez supprimer tous les conteneurs dans Docker, vous devez les arrêter au préalable.
Pour ce faire, vous pouvez utiliser quelque chose de similaire à ce que vous avez vu dans la section précédente. Supprimez simplement la partie image.
docker ps -q | xargs docker stop
5. Arrêtez un conteneur avec élégance
Pour être honnête, docker arrête un conteneur gracieusement par défaut. Lorsque vous utilisez la commande docker stop, cela donne au conteneur 10 secondes avant de le tuer de force.
Cela ne signifie pas qu'il faut toujours 10 secondes pour arrêter un conteneur. C'est juste que si le conteneur exécute certains processus, il dispose de 10 secondes pour arrêter le processus et quitter.
La commande Docker stop envoie d'abord la commande SIGTERM. Si le conteneur est arrêté pendant cette période, il envoie la commande SIGKILL. Un processus peut ignorer le SIGTERM mais SIGKILL tuera le processus immédiatement.
J'espère que vous connaissez la différence entre SIGTERM et SIGKILL.
Qu'est-ce que SIGTERM ? Quelle est la différence entre SIGKILL et SIGTERM ? SIGTERM et SIGKILL sont utilisés pour tuer un processus sous Linux. Mais vous devriez préférer utiliser SIGTERM. Voici pourquoi!

Vous pouvez modifier cette période de grâce de 10 secondes avec l'option -t. Supposons que vous souhaitiez attendre 30 secondes avant d'arrêter le conteneur :
docker stop -t 30 container_name_or_id
En fin de compte…
Je pense que toutes ces informations couvrent très bien le sujet. Vous savez beaucoup de choses sur l'arrêt d'un conteneur docker.
Restez à l'écoute pour plus de conseils et de tutoriels sur Docker. Si vous avez des questions ou des suggestions, n'hésitez pas à me le faire savoir dans la section des commentaires.