必须先将WSL设为版本2,再安装Docker Engine:执行wsl --set-default-version 2,否则容器启动会因缺少cgroups v2报“OCI runtime create failed”;随后在Ubuntu中配置源、安装docker-ce等组件,通过sudo dockerd & 启动守护进程,并用~/.bashrc自动拉起+用户加组实现免密运行。

在Windows子系统(WSL)中安装Docker容器服务,核心是绕过Docker Desktop图形界面,直接在WSL 2发行版内部署原生Docker Engine,适用于需命令行深度控制、规避桌面版权限限制或定制化部署的场景。
确认并升级到WSL 2
打开PowerShell(管理员),执行 wsl -l -v 查看当前发行版状态。若版本号显示为“1”或状态为空,说明尚未启用WSL 2。
运行 wsl --update 更新内核;若提示“无法连接到更新服务器”,改用 wsl --update --web-download 强制从GitHub拉取最新内核包。
执行 wsl --set-default-version 2 设为默认版本。这一步【必须在安装Docker Engine前完成】,否则后续安装的Docker将无法使用cgroups v2等关键特性,容器启动会报错“OCI runtime create failed”。
在Ubuntu发行版中安装Docker Engine
启动已配置为WSL 2的Ubuntu(如未安装,先运行 wsl --install Ubuntu)。
进入Ubuntu终端,依次执行:
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装完成后,【不要执行 sudo service docker start】——WSL中Docker守护进程需手动启用且不依赖systemd。直接运行 sudo dockerd & 启动守护进程(后台运行),再新开一个终端窗口验证:docker run hello-world。
配置Docker自动启动与用户免密
方法一:通过WSL启动脚本自动拉起Docker
在Windows端,用记事本创建文件 %USERPROFILE%\AppData\Local\Packages\<ubuntupackageid>\LocalState\etc\wsl.conf</ubuntupackageid>(若不存在则新建),在其中添加:
[boot]command = "sudo service docker start"
⚠️注意:此写法仅适用于已安装systemd的WSL发行版(如Ubuntu 24.04+默认禁用systemd)。多数Ubuntu WSL默认无systemd,该配置无效。
方法二(推荐):利用WSL启动时自动执行
在Ubuntu中编辑 ~/.bashrc,末尾追加:
if ! pgrep -x "dockerd" > /dev/null; then sudo dockerd > /dev/null 2>&1 &fi
保存后执行 source ~/.bashrc。下次启动WSL时,Docker守护进程将自动后台运行。
最后执行 sudo usermod -aG docker $USER,然后退出WSL并重新启动终端,即可免sudo运行docker命令。


















