Redémarrer un conteneur avec un signal spécifique
Dans cette étape, vous apprendrez comment redémarrer un conteneur Docker en envoyant un signal spécifique à son processus principal. Bien que docker restart
envoie par défaut un signal d'arrêt (SIGTERM
) suivi d'un signal de terminaison forcée (SIGKILL
) après un délai, vous pourriez avoir besoin d'envoyer un signal différent selon l'application exécutée dans le conteneur. Pour ce faire, vous pouvez d'abord arrêter le conteneur avec un signal spécifique via docker stop
, puis le relancer avec docker start
.
Utilisons à nouveau le conteneur my-nginx
. Vérifiez qu'il est en cours d'exécution.
docker ps
S'il ne l'est pas, démarrez-le :
docker start my-nginx
Maintenant, arrêtons le conteneur en envoyant le signal SIGKILL
. Ce signal termine immédiatement le processus sans lui permettre d'effectuer aucune opération de nettoyage.
docker stop -s SIGKILL my-nginx
Vous devriez voir le nom du conteneur s'afficher, et si vous exécutez docker ps
, le conteneur ne devrait plus apparaître.
docker ps
Le conteneur est maintenant arrêté. Pour le redémarrer, il suffit de le relancer.
docker start my-nginx
Le conteneur devrait maintenant être à nouveau en cours d'exécution. Vérifiez avec docker ps
.
docker ps
Vous devriez voir my-nginx
listé avec un statut Up
.
Bien que SIGKILL
soit un arrêt forcé, vous pouvez également envoyer d'autres signaux comme SIGHUP
ou SIGINT
, si votre application est configurée pour les gérer afin d'effectuer des arrêts gracieux ou des rechargements. Cependant, la configuration par défaut du conteneur nginx
gère correctement SIGTERM
.
Arrêtons à nouveau le conteneur, cette fois en utilisant le signal par défaut SIGTERM
(qui est celui utilisé par docker stop
si aucun signal n'est spécifié).
docker stop my-nginx
Vérifiez qu'il est arrêté :
docker ps
Maintenant, redémarrez-le une dernière fois.
docker start my-nginx
Vérifiez qu'il est en cours d'exécution :
docker ps
En combinant docker stop -s <signal>
et docker start
, vous obtenez un contrôle plus précis sur la manière dont un conteneur est arrêté avant d'être redémarré.