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
复制代码
# Docker 版本
Version:    24.0.7

# Cgroup 版本
Cgroup Version: 2

# 问题

docker容器无法启动,报错

复制代码
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 v2v1 不能兼容,因此导致容器启动后,容器内相关服务无法正常启动。

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
复制代码
# 更新 grub 配置
update-grub

# 重启系统
reboot

成功修改 Cgroup Versionv1 版本

成功解决问题

相关推荐
考虑考虑3 分钟前
数据库中的EXISTS
运维·数据库·后端
大盛供应链·卢生2 小时前
哪些国产芯片可以替代进口芯片,哪些替代不了
fpga开发·容器
小小的木头人2 小时前
Docker 环境下迁移 containerd 数据目录:从 `/var/lib/containerd` 到 `/data/containerd`
linux·docker
天远数科2 小时前
零信任架构实战:基于天远全能消金报告构建自动化信贷评估网关
运维·人工智能·架构·自动化
网硕互联的小客服5 小时前
各个版本的Linux系统如何修改远程端口ssh端口?
linux·运维·服务器·网络
Mr小林7 小时前
Docker 安装教程(在线 + 离线)
运维·docker·容器
java_logo7 小时前
Docker 部署 Milvus:轻松搭建高性能向量数据库平台
数据库·docker·私有化部署·milvus·向量数据库·rag·轩辕镜像
JudithHuang8 小时前
把本地服务暴露到公网
运维
yt004yt8 小时前
### 越华环保集团|绿岛 VOCs 集中治理,管网系统安全设计工程实战分享
大数据·运维
yt004yt8 小时前
越华环保集团|绿岛 VOCs 集中治理,管网系统安全设计工程实战分享
大数据·运维