如何获取已退出的docker容器的数字退出状态?

问题描述 投票:11回答:3

当容器退出时,docker ps -a显示其退出代码(滚动

$ 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

如何以编程方式获取数字退出代码,而不会出现容易出错的grep-ing和cut-ing?

docker exit-code
3个回答
21
投票

docker inspect与模板一起使用:

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

5
投票

你可以使用echo

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

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

3
投票

exit status of docker run是包含命令的退出状态,除非Docker本身存在问题(在这种情况下状态为125)或者无法调用包含的命令(在这种情况下状态为126)或者不能调用(在这种情况下状态为127)。

因此,当您将docker run作为子进程执行时,您可以像检索任何其他子进程一样检索退出状态:

  • 在C或C ++程序或其他编程语言中,使用waitpid()访问POSIX API。
  • 在POSIX之类的shell(实际上意味着大多数Unix shell,包括bash),作为$?完成后的特殊docker run变量的内容。
  • 在Java中,你曾经做Process.exitValue()Processdocker run值。

如果您使用的是Docker API,则应提供对退出状态的访问权限。

  • 在Java中使用Spotify Docker client,由ContainerExit.statusCode()返回的ContainerExit对象的docker.waitContainer()的值。
© www.soinside.com 2019 - 2024. All rights reserved.