docker cgroup memory no space left on device

问题描述:

操作系统:centos7.3系统
在创建容器的时候发现报错:
docker: Error response from daemon: oci runtime error: container_linux.go:265: starting container process caused “process_linux.go:284: applying cgroup configuration for process caused \”
mkdir /sys/fs/cgroup/memory/docker/xxxxx: no space left on device

问题排查:

一:
既然报错,无法创建,那么 cd 到 /sys/fs/cgroup/memory/docker目录,随便touch一个文件看看如何?
结果:报错 no space left on device
二:
看下磁盘,有没有地 df -h(当然后来发现其实这个是memory报错,如果是磁盘问题直接报devices错误了,不过顺便看了下)
结果:磁盘充足
三:
docker 每启动一个容器,就会创建一个cgroup,看下系统是不是cgroups个数达上限了
cat /proc/cgroups |grep memory (subsys_name hierarchy num_cgroups enabled)
结果:发现num_cgroups也就才50多个,上限一般都6W左右(如果你们发现自己的特别多,可以 echo 1>/sys/fs/cgroup/devices/docker/cgroup.clone_children 解决下)
也不是这个原因
四:
操,没办法了,怎么办?从头来吧,这肯定是cgroup的事,我这系统日志也没啥有用报错,回忆了下,服务器一开始改过docker挂在块设备,文件系统改动,又跟cgroup有关,我想到了selinux,通过 getenforce 查看selinux状态,果然竟然是开着的。关了,然后磁盘重新激活下。或者为了省事没直接重启下系统 reboot。
结果:好了

总结

网上搜资料,有个壮壮的外国女人,说这是内核 cgroup 溢出,可能吧,但我觉得我这中情况可能是在开启selinux的情况下改变了磁盘属性导致的。所以呀,不是特别懂selinux的就别开了。


个人广告

想找一些兼职的机会,挣点外快,打赏我可爱的主播妹妹
会的开发语言:
java、Python、go、php(凑活会)、sql、shell、js、html
熟悉的开源项目:
openstack、docker、k8s、swarm
熟悉的组件:
rabbitmq、haproxy、pacemaker、mysql、oracle、db2、redis、Jenkins、kafka、jboss、Nginx、Tomcat等等
熟悉的操作系统:
redhat6、centos5、6、7.
玩的比较好的游戏:
英雄联盟、英雄联盟、英雄联盟、只玩安妮O(∩_∩)O~
有意给机会的留言哦

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐