Arrêter un conteneur avec le signal et le timeout par défaut
Dans cette étape, vous apprendrez à arrêter un conteneur Docker en cours d'exécution en utilisant le signal et le timeout par défaut. Lorsque vous arrêtez un conteneur, Docker envoie un signal au processus principal s'exécutant à l'intérieur du conteneur. Par défaut, Docker envoie le signal SIGTERM
, qui demande au processus de s'arrêter proprement. Si le processus ne se termine pas dans le délai par défaut (généralement 10 secondes), Docker envoie un signal SIGKILL
pour forcer la terminaison du processus.
D'abord, lançons un conteneur qui restera actif. Nous utiliserons l'image ubuntu
avec une commande simple pour maintenir le conteneur en fonctionnement.
docker pull ubuntu
Vous devriez voir une sortie indiquant que l'image ubuntu
est en cours de téléchargement.
Using default tag: latest
latest: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
Maintenant, exécutez le conteneur ubuntu
en mode détaché (-d
) pour qu'il tourne en arrière-plan, avec une commande qui le maintient actif indéfiniment (par exemple tail -f /dev/null
).
docker run -d ubuntu tail -f /dev/null
Cette commande affichera l'ID du conteneur.
<container_id>
Vous pouvez vérifier que le conteneur est en cours d'exécution avec la commande docker ps
:
docker ps
Vous devriez voir le conteneur ubuntu
listé avec le statut Up
.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<container_id> ubuntu "tail -f /dev/null" About a minute ago Up About a minute ago <container_name>
Maintenant, arrêtons ce conteneur en utilisant la commande docker stop
. Vous pouvez utiliser soit l'ID du conteneur soit son nom. Remplacez <container_id>
par l'ID réel de votre conteneur.
docker stop <container_id>
La commande affichera l'ID du conteneur arrêté.
<container_id>
Après l'exécution de docker stop
, le conteneur recevra le signal SIGTERM
. Docker attendra le timeout par défaut (10 secondes) pour que le conteneur s'arrête proprement. S'il ne s'arrête pas dans ce délai, il enverra un SIGKILL
.
Vérifiez que le conteneur est arrêté en relançant docker ps
.
docker ps
Le conteneur ubuntu
ne devrait plus apparaître dans la sortie de docker ps
(qui n'affiche que les conteneurs actifs). Pour voir tous les conteneurs, y compris ceux arrêtés, utilisez docker ps -a
.
docker ps -a
Vous devriez voir le conteneur ubuntu
listé avec le statut Exited
.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<container_id> ubuntu "tail -f /dev/null" About a minute ago Exited (0) About a minute ago <container_name>
Ceci confirme que le conteneur a bien été arrêté en utilisant le signal et le timeout par défaut.