为何在WSL2(Ubuntu)中无法使用docker-compose或docker-compose.exe?
WSL2 Ubuntu环境中docker-compose执行失败问题排查
问题描述
我编写了如下bash脚本:
docker-compose build docker-compose up -d
在WSL2(Ubuntu)环境运行时,执行docker-compose报错:
The command 'docker-compose' could not be found in this WSL 2 distro. We recommend to activate the WSL integration in Docker Desktop settings. For details about using Docker Desktop with WSL 2, visit: https://docs.docker.com/go/wsl2/
尝试运行docker-compose.exe时,错误信息如下:
error during connect: this error may indicate that the docker daemon is not running: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.project%3Dnode-ecomm%22%3Atrue%7D%7D": open //./pipe/docker_engine: The system cannot find the file specified.
补充环境信息:
$wsl.exe -l -v NAME STATE VERSION * Ubuntu Running 2 docker-desktop Running 2 docker-desktop-data Stopped 2
已在Docker Desktop客户端中完成WSL集成相关设置,请问问题原因是什么?
问题原因分析
1. docker-compose命令未找到的原因
Docker Desktop的WSL集成默认仅在docker-desktop分发版中提供docker-compose,你的Ubuntu分发版未安装该工具,也未通过集成路径映射获取到可执行文件。
2. docker-compose.exe执行失败的原因
docker-compose.exe是Windows端的可执行文件,在WSL2中运行时会默认连接Windows的Docker管道,但当前Windows端Docker守护进程未正常运行,或者WSL2与Windows的管道映射存在问题。另外,docker-desktop-data处于Stopped状态,该分发版负责Docker镜像和容器数据的存储,停止状态会导致Docker服务无法正常访问底层存储,间接引发连接失败。
修复建议
- 检查Windows端Docker Desktop是否正常启动,确认右下角托盘图标显示为运行状态。
- 重新配置Docker Desktop的WSL集成:打开Docker Desktop设置,进入Resources > WSL Integration,确保勾选你的Ubuntu分发版,点击"Apply & Restart"。
- 在Ubuntu WSL2中直接安装docker-compose插件(新版Docker已将
docker-compose整合为docker compose子命令):sudo apt update sudo apt install docker-compose-plugin # 验证安装 docker compose version - 启动
docker-desktop-data分发版:wsl --start docker-desktop-data
内容的提问来源于stack exchange,提问作者Jackie
相关产品推荐
相关产品推荐

