【问题标题】:How to get the numeric exit status of an exited docker container?如何获取已退出 docker 容器的数字退出状态?
【发布时间】:2018-02-28 05:58:39
【问题描述】:

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


    【解决方案1】:

    docker inspect 与模板一起使用:

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

    【讨论】:

      【解决方案2】:

      你可以使用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++ 程序或其他提供 POSIX API 访问权限的编程语言中,使用 waitpid()
      • 在类似 POSIX 的 shell(实际上是指大多数 Unix shell,包括 bash)中,作为特殊 $? 变量的内容紧接在完成 docker run 之后。
      • 在 Java 中,Process.exitValue() 的值对应于您以前使用的 Process docker run

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

      • 在使用Spotify Docker client的Java中,ContainerExit对象的ContainerExit.statusCode()的值由docker.waitContainer()返回。

      【讨论】:

        猜你喜欢
        • 2015-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-22
        • 1970-01-01
        • 2014-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多