docker启用cgroup v2

半兽人 发表于: 2024-02-01   最后更新时间: 2024-03-28 21:58:07  
{{totalSubscript}} 订阅, 1,488 游览

查看docker当前的Cgroup版本:

docker info | grep Cgroup

返回:

 Cgroup Driver: systemd
 Cgroup Version: 1

如果你这里是2那么说明启用了,如果是1,那么就未启用。

Docker使用cgroup v2的条件

对于Docker来说,Cgroups v2的使用需要满足以下条件:

  • Linux内核版本在4.15以上,使用uname -r查看。
  • 系统已经启用Cgroups v2,可以通过sudo mount -t cgroup2 none /sys/fs/cgroup命令来启用。
  • Docker版本在20.10及以上。

识别Linux节点上的cgroup版本

cgroup版本取决于使用的Linux发行版和操作系统上配置的默认cgroup版本。要检查你的发行版使用的cgroup版本,可以在节点上运行以下命令:

stat -fc %T /sys/fs/cgroup/
  • 如果输出是cgroup2fs,则表示使用的是cgroup v2
  • 如果输出是tmpfs,则表示使用的是cgroup v1

也可以运行查看:

cat /proc/filesystems | grep cgroup

启用cgroup v2

编辑 /etc/default/grub 或者 /etc/sysconfig/grub,添加以下内容来启用cgroup v2

GRUB_CMDLINE_LINUX="cgroup_no_v1=all systemd.unified_cgroup_hierarchy=1"

保存文件后,运行以下命令更新GRUB配置:

update-grub   # 对于Debian/Ubuntu
grub2-mkconfig -o /boot/grub2/grub.cfg   # 对于CentOS/Fedora

重启系统以应用内核启动参数。

reboot

确认cgroup v2已经启用。运行以下命令:

mount | grep cgroup

你应该会看到类似以下的输出,其中cgroup2被挂载:

cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)

启动Docker服务。如果你已经按照上面的步骤进行了配置,Docker会自动检测并使用cgroup v2。

确认Docker是否在cgroup v2中运行。运行以下命令:

docker info | grep Cgroup

回退到Cgroup v1

如果你想在配置回去

编辑原来的grub文件配置为:

GRUB_CMDLINE_LINUX="cgroup_no_v1=all systemd.unified_cgroup_hierarchy=0"

运行指令

sudo update-grub
reboot

REF

https://kubernetes.io/zh-cn/docs/concepts/architecture/cgroups/

更新于 2024-03-28

查看docker更多相关的文章或提一个关于docker的问题,也可以与我们一起分享文章