【问题标题】:What is the authoritative list of Docker Run exit codes?Docker Run 退出代码的权威列表是什么?
【发布时间】:2015-09-26 15:44:09
【问题描述】:

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

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

【问题讨论】:

  • 在源代码中?
  • 如果我不清楚,我很抱歉。错误呢?例如,如果我 docker run -v non_existent_directorydocker run improper_container_path 可能会出错,退出代码应该反映这一点。

标签: docker exitstatus


【解决方案1】:

对于 Docker >= 1.10,请参阅 this PR,它遵循标准 chroot exit codes

  • 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's exit status documentation 了解有关当前版本的更多信息。

【讨论】:

【解决方案2】:

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

$ 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2018-10-08
    • 2013-09-24
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多