第一步 查看停止容器的状态
sudo docker ps -a
(命令加上sudo的原因:官方文档)
得到报错信息:Exited (137) *** ago,此时确定大概率是OOM(out of memory),也就是该容器内存占用过高,被系统杀了。
第二步 查看详细状态
sudo docker inspect 容器ID
查看最关键的一个属性:"OOMKilled": false,
按理来说,137大概率是OOM,怎么可能是false呢?
好在OOM这种情况,系统是会记录的,可能docker没记上。
第三步 查看系统的OOM记录
dmesg | grep -E 'kill|oom|out of memory'
可以看到如下情况:
由此我们可以知道确实发生了OOM,并且就是容器中的程序
(查看系统日志的方法有很多,我的服务器是:UBuntu16.04LTS,这个没用:grep "Out of memory" /var/log/messages
,可以用这个:egrep -i -r 'killed process' /var/log
, 能看到OOM发生的时间,可以跟容器的停止时间做个对比,更好的确定是不是你的容器发生的OOM)
总结
当docker报错误代码137时,大概率就是内存溢出,不过docker自己可能没记录,要去查看系统日志
posted @
2023-05-17 15:13
work006
阅读(
218)
评论()
编辑
收藏
举报