docker启动问题 mountpoint for devices not found

1.现象

容器停掉过一段时间之后再启动报了mountpoint for devices not found错误
在这里插入图片描述

2.思路

根据报错可以看出跟cgroup有一定的关系,所以从cgroup下手,docker一般用的是/sys/fs/cgroup,查看一下cgroup是否正不正常

cgroup子系统的介绍:
CPU:使用调度程序为cgroup任务提供 CPU 的访问。
cpuacct:产生cgroup任务的 CPU 资源报告。
cpuset:如果是多核心的CPU,这个子系统会为cgroup任务分配单的CPU和内存。
devices:允许或拒绝cgroup任务对设备的访问。
freezer:暂停和恢复cgroup任务。
memory:设置每个cgroup 的内存限制以及产生内存资源报告。
net_cls:标记每个网络包以供 cgroup方便使用。
ns:命名空间子系统。
perf event:增加了对每个group的监测跟踪的能力,可以监测属于某个特定的group 的所有线程以及运行在特定CPU上的线程。
参考:https://blog.csdn.net/qyf158236/article/details/110475457

根据对cgroup的了解然后对比以下正常/sys/fs/cgroup和不正常的/sys/fs/cgroup发现有些子系统缺失

然后用mount -t cgroup查看了子系统的挂在状态,看到了只有三个子系统挂载了,所以问题就明确了cgroup子系统没有挂载的原因,至于为什么没有挂载没找到原因

在这里插入图片描述
3.解决
明确问题后,手动挂载子系统

挂载脚本:https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount

cd /sys/fs/cgroup
 
for sys in $(awk ‘!/^#/ { if ($4 == 1) print $1 }’ /proc/cgroups); do

mkdir -p $sys

if ! mountpoint -q $sys; then

    if ! mount -n -t cgroup -o $sys cgroup $sys; then

       rmdir $sys || true

    fi

fi
done

子系统挂载好了之后再启动容器就OK了

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值