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

时间:2017-09-19 12:35:38

标签: docker exit-code

当容器退出时,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

如何以编程方式获取数字退出代码,而不容易出错grepcut -

3 个答案:

答案 0 :(得分:20)

docker inspect与模板一起使用:

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

答案 1 :(得分:3)

您可以使用echo

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

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

答案 2 :(得分:1)

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

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

  • 在使用waitpid()的C或C ++程序或提供POSIX API访问权限的其他编程语言中。
  • 在类似POSIX的外壳(实际上是指大多数Unix外壳,包括bash)中,作为特殊$?变量的内容,紧接着完成{em {1}}。
  • 在Java中,您曾经做过docker run的{​​{1}}的{​​{3}}值。

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

  • 在使用Process.exitValue()的Java中,Process返回的docker run对象的ContainerExit.statusCode()的值。