Codes de sortie

Quand un conteneur s'arrête, docker ps -a affiche le code de sortie de son processus principal. Ce nombre dit pourquoi il s'est arrêté : 0 il a terminé, 1 l'application a échoué, 137 il a été tué, 143 on lui a demandé de s'arrêter.

Comment ça marche

Au-delà de 128, le code indique un signal : 128 + 9 (SIGKILL) = 137, 128 + 15 (SIGTERM) = 143. 137 vient de docker kill, de docker stop après son délai de grâce, ou de l'OOM killer du noyau, et docker inspect affiche alors OOMKilled: true. 126 et 127 signifient que la commande n'a pas pu s'exécuter ou n'a pas été trouvée.

Ce qui casse

Exited (0) juste après le démarrage n'est pas un succès pour un serveur : son processus principal n'avait simplement plus rien à faire. Lis d'abord le code, puis docker logs, avant de changer quoi que ce soit.

Dans un terminal

docker ps -a
docker inspect -f '{{.State.ExitCode}} {{.State.OOMKilled}}' api
docker logs --tail 20 api

Regarde-le casser, puis répare-le

Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.