78

抱歉,如果有人问过这个问题,但在Docker 文档中找不到权威的退出代码列表(也称为退出状态)。奇怪!我看到有关使其保持一致的建议,但 docker.com 上没有文档。

有谁知道在哪里可以找到退出代码?

4

2 回答 2

102

对于 Docker >= 1.10,请参阅此 PR,它遵循标准chroot 退出代码

  • 125:docker run本身失败
  • 126: 包含的命令不能被调用
  • 127: 如果找不到包含的命令
  • 128 + n致命错误信号n
    • 130=(128+2)由 Control-C 终止的容器
    • 137=(128+9)容器收到一个SIGKILL
    • 143=(128+15)容器收到一个SIGTERM

signal查看完整列表的手册页(在 cmd 类型上man 7 signal或在线查看例如signal)。

查看Docker 的退出状态文档以获取有关当前版本的更多信息。

于 2016-02-15T13:45:36.143 回答
19

通常它将是进程的退出状态,因此它取决于应用程序,即:

$ docker run debian sh -c "exit 5;"
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
7fcc37778df0        debian              "sh -c 'exit 5;'"   4 seconds ago       Exited (5) 3 seconds ago                       reverent_einstein   

但在某些情况下,Docker 本身可以返回退出代码:

  • 125 如果 Docker 守护程序有错误(例如提供了错误的标志)
  • 126 如果无法调用容器命令(例如文件不可执行)
  • 127 如果找不到容器命令(例如错误的二进制路径)

https://docs.docker.com/engine/reference/run/#exit-status

于 2015-07-08T17:35:45.277 回答