赞
踩
总结下今天遇到的docker容器无法启动的问题。
直接原因是容器挂载的目录满了,没有剩余空间可用,导致容器无法启动
磁盘满的原因是某个容器内的程序产生了一个超大的core文件,占满了磁盘
那么问题来了,我们的core文件是使用了google breakpad管理,只会产生minidump,且指定了目录,怎么没有生效呢??
我们是基于centos7系统建的一个容器,容器内运行一个C++写的程序,其中采用google breakpad来管理core文件,并指定了dump路径,如/data/crash,但程序崩溃后,并没有看见dmp文件。
排查过程大致如下:
一,直接运行镜像文件:docker run -it XXXX --entrypoint="/bin/bash",启动程序,人为core掉,发现在当前目录产生了一个core.18的文件,查看系统配置/pro/sys/kernel/core_pattern,内容是:core,说明程序是按照系统默认方式在core,minidump并没有生效。
二,排查了很久,查了很多资料没有找到google breakpad不生效的原因,且整个编译运行没有报错。同时将程序放到主机上(相同OS)运行,正常产生了minidump。由于急于恢复,该问题搁置,先试图修改系统配置/proc/sys/kernel/core_pattern来指定路径
问题又来了,使用echo XXXXX >/proc/sys/kernel/core_pattern,报read-only file system,无法修改。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。