Docker 笔记 - Docker 容器的退出状态码

说明:前面的文章中已经写过关于容器的退出状态码的内容,鉴于这个知识点在实践中比较基础和常用,还是单独拿出来写一下,也方便参考
【Docker 笔记 - Docker 容器的退出状态码】Docker 容器也有退出状态码,这一点类似 Linux 命令。Docker 容器的重启策略就是基于状态码。具体如下:

  • 0
    表示容器正常退出。例如 stop 容器。
  • 非 0
    表示容器退出异常(退出状态码采用 chroot 标准)。例如执行 docker run 失败后的容器退出。
  • 125
    Docker 守护进程本身有错误。
  • 126
    容器启动后,要执行的默认命令无法调用。
  • 127
    容器启动后,要执行的默认命令不存在。
  • 其他命令状态码
    容器启动后在容器内部执行命令,该命令退出时的返回状态码,就作为容器的退出状态码。
获取 Docker 容器退出状态码的方法 方法一:使用命令 docker ps -a
docker ps -a 命令返回结果的第 5 列中 Exited 后面括号中的数字就是容器的退出状态码。如下所示,Exited (1) 33 minutes ago,括号内的 1 就是这个容器的退出状态码。但是 1 并不是容器本身的退出状态码,而是容器中运行的命令执行失败后退出的状态码。在 Linux 系统定义的命令退出状态码中,1 表示未知,即系统不知道具体错误的原因。这时候就需要看具体的日志来判断。
[root@k8s-master /]# docker ps -a | grep nginx 3e64cad716c0192.168.100.20:5000/mynginx:latest"nginx"36 minutes agoExited (1) 33 minutes agonginx-demo

方法二:使用 inspect 命令
inspect 命令是用来获取容器的命令,配合其他参数就能获取容器的退出状态码。如下所示,还是上面案例中的容器,获得其退出状态码为 1
[root@k8s-master /]# docker inspect 3e64cad716c0 --format='{{.State.ExitCode}}' 1

    推荐阅读