web-dev-qa-db-fra.com

Comment obtenir le statut de sortie numérique d'un conteneur Docker sorti?

Lors de la sortie d'un conteneur, docker ps -a montre son code de sortie (faites défiler

$ docker run ubuntu bash -c "exit 1"
CONTAINER ID   IMAGE    COMMAND              CREATED        STATUS                     PORTS                     NAMES
c2c769c4b9ef   ubuntu   "bash -c 'exit 1'"   6 seconds ago  Exited (1) 3 seconds ago                             happy_fermat

Comment puis-je obtenir le code de sortie numérique par programme, sans grep- ing et cut- source d'erreurs?

13
Adam Matan

Utilisation docker inspect avec des modèles:

$ docker inspect c2c769c4b9ef --format='{{.State.ExitCode}}'
1
21
Adam Matan

Vous pouvez utiliser echo:

$ docker run debian bash -c "exit 1"
$ echo $?
1

$ docker run debian bash -c "exit 0"
$ echo $?
0
8
noamt

état de sortie de docker run est l'état de sortie de la commande contenue, sauf en cas de problème avec Docker lui-même (auquel cas l'état est 125) ou la commande contenue n'a pas pu être invoquée (auquel cas le statut est 126) ou ne peut pas être invoquée (auquel cas le statut est 127).

Par conséquent, lorsque vous exécutez docker run En tant que processus enfant, vous pouvez récupérer l'état de sortie comme vous le feriez pour tout autre processus enfant:

  • Dans un programme C ou C++, ou tout autre langage de programmation donnant accès à l'API POSIX, en utilisant waitpid() .
  • Dans un POSIX comme Shell (ce qui signifie en pratique la plupart des shells Unix, y compris bash), comme le contenu de la variable spéciale $? immédiatement après achèvement d'un docker run.
  • En Java, la valeur de Process.exitValue() pour le Process que vous aviez l'habitude de faire docker run.

Si vous utilisez une API Docker, elle devrait donner accès à l'état de sortie.

  • Dans Java utilisant le client Spotify Docker , la valeur de ContainerExit.statusCode() de l'objet ContainerExit retournée par docker.waitContainer().
4
Raedwald