当容器退出时,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
Run Code Online (Sandbox Code Playgroud)
如何以编程方式获取数字退出代码,而不会出现容易出错grep
和cut
-ing?
Ada*_*tan 22
docker inspect
与模板一起使用:
$ docker inspect c2c769c4b9ef --format='{{.State.ExitCode}}'
1
Run Code Online (Sandbox Code Playgroud)
Rae*_*ald 13
的退出状态docker run
是包含命令的退出状态,除非Docker本身有问题(在这种情况下状态为125)或包含的命令无法调用(在这种情况下状态为126)或可能不被调用(在这种情况下,状态为 127)。
因此,当您docker run
作为子进程执行时,您可以像对任何其他子进程一样检索退出状态:
waitpid()
.bash
),作为特殊的内容$?
可变后立即的完成docker run
。Process.exitValue()
for的值。Process
docker run
如果您使用的是 Docker API,它应该提供对退出状态的访问。
ContainerExit.statusCode()
的的ContainerExit
对象返回的docker.waitContainer()
。您可以使用echo
:
$ docker run debian bash -c "exit 1"
$ echo $?
1
$ docker run debian bash -c "exit 0"
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)
请注意,答案: https: //stackoverflow.com/a/46300611/2886980 可能有些欺骗性。
对于 Docker 版本 20.10.23 命令:
$ docker inspect c2c769c4b9ef --format={{.State.ExitCode}}
Run Code Online (Sandbox Code Playgroud)
对于正在运行的容器以及以代码 0 退出的容器,都将返回 0。
这不太合理。我希望该命令返回运行容器的空字符串。否则无法区分容器是否已成功完成以及仍在运行的容器。
这意味着如果您不确定容器是否已退出,代码 0 可能会给您带来麻烦。
对于这种情况更好的选择是:
$ docker inspect c2c769c4b9ef --format={{.State.Status}}:{{.State.ExitCode}}
Run Code Online (Sandbox Code Playgroud)
结果将是:
running:0
Run Code Online (Sandbox Code Playgroud)
或者
exited:0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8900 次 |
最近记录: |