Ubuntu22.04系统 Cgroup v2 切换成v1

2023-11-13 17:03:12 浏览数 (1)

使用v1导致docker容器启动失败

Failed to mount cgroup at /sys/fs/cgroup/systemd: Operation not permitted · Issue #4072 · lxc/lxc · GitHub

https://github.com/lxc/lxc/issues/4072

原因:ubuntu自21.04版本后的版本(不包含21.04)linux内核改用了cgroup v2版本,而容器镜像环境(centos7)需要的还是cgroup v1版本且centos7由于几乎不更新维护,因此后续小概率会支持cgroup v2。同时由于cgroup v2和v1不能兼容,因此导致容器启动后,内置的病毒沙箱引擎和相关服务无法正常启动。

既然docker容器只支持cgroup v1版本,那么我们就把宿主机(host)的cgroup版本改成v1就行了

代码语言:javascript复制
vim /etc/default/grub

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=0 systemd.unified_cgroup_hierarchy=0"

systemd.unified_cgroup_hierarchy=0 【值为1,就是cgroup v2,值为0,则为cgroup v1】

参数修改完成后,需要重启加载配置文件,重启系统

代码语言:javascript复制
sudo update-grub
sudo reboot

重启后,docker容器可正常运行

代码语言:javascript复制
mount | grep cgroup

操作系统版本:Ubuntu 22.04.3 LTS

内核版本:6.2.0-34-generic

0 人点赞