Windows WSL2 Ubuntu运行docker-compose报无法连接Docker daemon错误
WSL2 Ubuntu环境Docker连接报错修复方案
你遇到的docker: unrecognized service、无法连接/var/run/docker.sock报错,核心原因只有两类:一是WSL内只安装了Docker客户端、没有安装完整的服务端组件,或者安装了错误的低版本适配包;二是依赖Windows侧Docker Desktop但未开启对应WSL发行版的集成权限,服务无法被WSL识别。
方案1:基于Docker Desktop的集成部署(推荐,WSL2适配性最优)
该方案不需要在WSL内部维护Docker daemon进程,稳定性最高:
- 先清理WSL内之前安装的冲突Docker组件:
sudo apt remove -y docker docker-engine docker.io containerd runc docker-compose sudo apt autoremove -y
- 打开Windows端Docker Desktop的设置页,进入Resources > WSL Integration分类,找到你使用的Ubuntu发行版,打开对应集成开关,点击「Apply & Restart」等待Docker重启完成。
- 打开Windows PowerShell,执行
wsl --shutdown关闭所有运行中的WSL实例,重新打开Ubuntu终端,直接执行docker ps验证即可,不需要手动执行service启动命令——此时daemon运行在Windows侧,WSL内的客户端会通过集成通道自动连接。 - 验证通过后再执行
docker-compose up就不会出现daemon连接错误。
方案2:WSL内原生部署Docker Engine(无需安装Docker Desktop)
如果不想使用Docker Desktop,可在WSL内部直接部署完整Docker服务,注意不要直接安装源内默认的docker.io包,该版本老旧且对WSL2适配存在问题:
- 先彻底清理残留的错误安装文件:
sudo apt purge -y docker* containerd* runc* sudo apt autoremove -y sudo rm -rf /var/lib/docker /etc/docker
- 配置官方Docker软件源并安装完整组件:
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-compose-plugin docker-compose
- 开启WSL2的systemd支持(WSL 0.67.6及以上版本均支持),解决服务识别问题:
echo -e "[boot]\nsystemd=true" | sudo tee /etc/wsl.conf
- 回到PowerShell执行
wsl --shutdown关闭WSL实例,重新进入Ubuntu终端后执行以下命令启动服务、配置权限:
sudo systemctl start docker sudo systemctl enable docker sudo usermod -aG docker $USER newgrp docker
- 执行
docker ps验证服务正常运行后,即可正常使用docker-compose up命令。
补充说明
- 你之前测试Podman无法在WSL内运行,本质也是因为WSL默认未开启systemd支持,按上述步骤开启systemd后即可正常部署Podman,但优先使用Docker的情况下选择上述两个方案之一即可解决问题。
- 如果开启systemd后仍然提示docker服务不存在,执行
sudo dpkg-reconfigure docker-ce重新生成服务配置文件即可修复。
内容的提问来源于stack exchange,提问作者Kurapika
相关产品推荐
相关产品推荐

