用 docker inspect 提取容器退出码需关注 .state.exitcode 字段,仅在 status 为 exited 时有效;常用命令如 docker inspect -f '{{.state.exitcode}}' nginx-app,配合状态判断或 jq 可避免误读,常见值有 0(正常)、1(错误)、137(oom)、143(sigterm)。

直接用 docker inspect 提取容器运行状态码,核心是定位 .State.ExitCode 字段——它只在容器已停止(Status 为 exited)时有效,代表进程退出时返回的整数值,常用于判断异常原因。
提取基础退出码(ExitCode)
最简方式是用 --format 直接读取:
-
docker inspect -f '{{.State.ExitCode}}' nginx-app→ 返回数字,如0(正常)、1(通用错误)、137(OOM killed)等 - 注意:若容器仍在运行(
running),该字段值为0,但无实际意义;只有Status是exited时才应关注此值
结合状态判断再取码(防误读)
避免对运行中容器误读 ExitCode,可加条件判断:
docker inspect -f '{{if eq .State.Status "exited"}}{{.State.ExitCode}}{{else}}N/A{{end}}' nginx-app- 或用
jq更稳妥:docker inspect nginx-app | jq -r '.[0].State.Status + " → " + (.State.ExitCode | tostring)',输出类似exited → 1
关联常见退出码含义
ExitCode 本身是数字,需结合上下文解读:
-
0:进程正常退出(多数服务主动退出时) -
1:通用错误(如启动失败、配置加载出错) -
137:被系统 OOM Killer 终止(内存超限) -
143:收到 SIGTERM 后正常退出(如docker stop) - 非零值一般意味着非预期终止,建议配合
docker logs和.State.FinishedAt时间戳排查
扩展:同时看状态与退出码
一行命令兼顾生命周期状态和退出结果:
docker inspect -f 'Status: {{.State.Status}} | Exit: {{.State.ExitCode}} | Since: {{.State.FinishedAt}}' nginx-app- 对已退出容器,能快速确认是否异常终止及发生时间;对运行中容器,
ExitCode可忽略,重点看Status和StartedAt











