You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu容器内启动Docker遇/sys/fs/cgroup挂载权限拒绝问题求助

解决Docker容器内启动Docker的cgroup权限问题

核心原因

在Docker容器内部运行Docker(即DinD)时,默认的cgroup资源访问权限不足,即便使用了--privileged参数,容器仍无法正常挂载宿主机的cgroup子系统,导致启动时出现权限拒绝错误。同时,容器内独立的Docker环境会将镜像、容器数据存储在容器内部,极易引发存储空间暴涨的问题。

解决方案1:重新创建容器并挂载cgroup

替换原容器创建命令,添加cgroup只读挂载参数,让容器直接使用宿主机的cgroup资源:

docker run -it --privileged -u root --name ubuntu-vm \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  ubuntu /bin/bash

进入容器后重新安装Docker并启动,即可解决cgroup权限拒绝问题。

解决方案2:挂载宿主机Docker Socket(更适合资源评估场景)

如果你的需求只是通过容器化Ubuntu评估服务器资源,无需在容器内运行独立的Docker环境,推荐直接挂载宿主机的Docker Socket,这样容器内可直接调用宿主机的Docker服务,避免安装和权限问题,还能防止容器体积暴涨:

docker run -it --privileged -u root --name ubuntu-vm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v $(which docker):/usr/bin/docker \
  ubuntu /bin/bash

这种方式下,容器内执行的docker、docker compose命令实际都是通过宿主机的Docker服务运行,所有镜像和容器数据都存储在宿主机,不会占用容器的存储空间,资源评估结果也更准确。

临时修复(不推荐)

如果不想重新创建容器,可在容器内手动挂载cgroup子系统,但重启容器后会失效:

# 先挂载tmpfs到cgroup根目录
mount -t tmpfs tmpfs /sys/fs/cgroup
# 创建需要的cgroup子目录并挂载对应子系统
mkdir -p /sys/fs/cgroup/cpu /sys/fs/cgroup/memory /sys/fs/cgroup/blkio
mount -t cgroup cgroup -o cpu /sys/fs/cgroup/cpu
mount -t cgroup cgroup -o memory /sys/fs/cgroup/memory
# 其他cgroup子系统可按需挂载,或直接挂载所有:mount -t cgroup cgroup /sys/fs/cgroup

内容的提问来源于stack exchange,提问作者tabool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:18:08