如何获取Docker容器上次意外退出的退出码?
获取Docker容器上次意外退出的退出码方法
直接通过Docker命令查看
查看单个容器最后一次退出的状态码:
docker inspect -f '{{.State.ExitCode}}' <container-id>输出的数字即为退出码:
0表示正常退出,非0值对应错误类型(比如137代表进程被强制杀死,143代表收到终止信号后退出)。查看容器历次退出的详细记录(包含退出码、退出时间):
docker inspect -f '{{range .State.History}}ExitCode: {{.ExitCode}}, FinishedAt: {{.FinishedAt}}{{"\n"}}{{end}}' <container-id>
使用Docker Compose命令(针对您的场景)
因为您用Docker Compose管理服务,也可以直接通过服务名操作:
- 查看指定服务对应容器的最后退出码:
docker-compose ps -q <service-name> | xargs docker inspect -f '{{.State.ExitCode}}' - 快速查看所有服务的状态(包含退出码):
输出的docker-compose psSTATUS列会显示类似Exited (137) 10 minutes ago的内容,括号内的数字就是退出码。
常见退出码含义参考
0:应用正常退出1:应用自身抛出的通用错误137:进程被强制终止(大概率是内存耗尽触发OOM Killer,或被kill -9命令终止)143:进程收到SIGTERM信号后优雅退出2:shell命令执行错误(比如参数不正确)
后续排查建议
如果退出码是137,优先检查宿主机和容器的内存使用情况(可用docker stats实时查看容器资源占用);如果是1这类应用错误,建议确认应用日志是否输出到了容器的stdout/stderr,若日志写入了容器内文件,可通过docker exec -it <container-id> bash进入容器查看对应日志文件。
内容的提问来源于stack exchange,提问作者Echo
相关产品推荐
相关产品推荐

