WSL2(Windows11)中Ubuntu启动Docker遇cgroup挂载错误
解决WSL2 Ubuntu下Docker启动时的cgroup挂载错误
问题背景
Windows 11的WSL2环境中,Ubuntu 20.04/22.04版本启动Docker时出现大量cgroup挂载错误,重装系统和Docker无法解决,推测由Windows更新引发。错误示例:
❯ sudo service docker start [sudo] password for anat: mount: /sys/fs/cgroup/cpuset: wrong fs type, bad option, bad superblock on cgroup, missing codepage or helper program, or other error. mount: /sys/fs/cgroup/cpu: wrong fs type, bad option, bad superblock on cgroup, missing codepage or helper program, or other error. # 其余cgroup子系统错误省略 * Starting Docker: docker [ OK ]
核心原因
Windows更新后WSL2默认启用cgroup v2,但部分Ubuntu版本的Docker服务仍尝试挂载cgroup v1子系统,导致版本冲突报错。
解决方案
方法1:强制WSL2使用cgroup v1
- 在Windows系统中,创建或修改
%USERPROFILE%\.wslconfig文件,添加以下内容:
[wsl2] kernelCommandLine = cgroup_no_v1=all
- 关闭所有WSL实例:
wsl --shutdown
- 重新启动Ubuntu,再启动Docker服务:
sudo service docker start
方法2:配置Docker适配cgroup v2
- 在Ubuntu中创建Docker配置目录(若不存在):
sudo mkdir -p /etc/docker
- 创建或编辑
/etc/docker/daemon.json文件,添加cgroup驱动配置:
{ "exec-opts": ["native.cgroupdriver=cgroupfs"] }
- 重启Docker服务:
sudo systemctl daemon-reload sudo service docker restart
方法3:更新WSL2内核
- 打开Windows终端(管理员权限)执行:
wsl --update
- 重启WSL实例后再次尝试启动Docker。
验证步骤
启动Docker后执行以下命令,确认服务正常运行:
docker run hello-world
内容的提问来源于stack exchange,提问作者Anatol
相关产品推荐
相关产品推荐

