docker之cgroup版本问题

 环境

# Linux 版本

uname -a

Linux mingy-ecs 5.15.0-83-generic #92-Ubuntu SMP Mon Aug 14 09:30:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

image.png


# Docker 版本
Version:    24.0.7

# Cgroup 版本
Cgroup Version: 2

image.png

# 问题

docker容器无法启动,报错

image.png

WARNING: the "devices" cgroup should be in its own hierarchy.
WARNING: it looks like the "devices" cgroup is not mounted.
......
Error starting daemon: Devices cgroup isn't mounted

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

# 原因

Linux 5.x 及以上内核改用了 cgroup v2 版本,而容器镜像环境需要的还是 cgroup v1 版本。

同时由于 cgroup v2 和 v1 不能兼容,因此导致容器启动后,容器内相关服务无法正常启动。

Linux 4.x 内核版本才用的 cgroup v1 版本,可正常使用,无影响。

# 解决

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

编辑修改配置文件 /etc/default/grup

# 注释掉之前的 GRUB_CMDLINE_LINUX 内容
sed -i '/GRUB_CMDLINE_LINUX=/s/^/# /' /etc/default/grub

# 插入新的 GRUB_CMDLINE_LINUX 内容
sed -i '/GRUB_CMDLINE_LINUX=/a\GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=0 systemd.unified_cgroup_hierarchy=0"' /etc/default/grub

image.png

# 更新 grub 配置
update-grub

# 重启系统
reboot

成功修改 Cgroup Version 为 v1 版本

image.png

成功解决问题

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-25 03:24:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-25 03:24:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-25 03:24:01       82 阅读
  4. Python语言-面向对象

    2024-01-25 03:24:01       91 阅读

热门阅读

  1. 死锁面试题详解

    2024-01-25 03:24:01       52 阅读
  2. Koa框架

    2024-01-25 03:24:01       57 阅读
  3. JVM实战(29)——模拟栈内存溢出

    2024-01-25 03:24:01       55 阅读
  4. Docker离线安装

    2024-01-25 03:24:01       46 阅读
  5. 分布式事务理论基础

    2024-01-25 03:24:01       57 阅读
  6. 03 | 事务隔离

    2024-01-25 03:24:01       50 阅读
  7. vant组件库的简单使用

    2024-01-25 03:24:01       63 阅读