首页/云/Docker 容器速查/确认容器是否被 OOM 杀死
容器排障52 条

确认容器是否被 OOM 杀死

OOMKilled 字段是判定关键:State.OOMKilled=true 表示容器内存超限被内核杀掉,退出码通常为 137,但 137 不等于必然 OOM。

Docker 容器速查云更新于 2026-10-12
判定inspect 的 State.OOMKilled
联动ExitCode 137 + events 的 oom 事件
证据宿主 dmesg 与容器当前内存限额

示例

示例
docker inspect -f 'oom={{.State.OOMKilled}} exit={{.State.ExitCode}} mem={{.HostConfig.Memory}}' web
docker events --since 2h --filter event=oom
dmesg -T | grep -i -E 'killed process|oom' | tail -10
容器 OOM 是结果不是原因:结合 stats 曲线与应用日志找谁在涨内存。

易错点

  • 不设 --memory 时容器可能被宿主级 OOM 波及,OOMKilled 未必置位,要配合 dmesg
  • ES/PHP 类应用的堆与进程数配置超出限额时会周期性被杀,改限额前先看峰值

数据来源与参考

  • Docker 官方文档:Out Of Memory 与 docker inspect State(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌