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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:39:33