Docker Desktop新版本中docker-compose命令已退役,正确命令是docker compose version(空格分隔);WSL2中需在Docker Desktop设置中启用WSL集成并勾选对应发行版,同时确保“Use the new Docker Compose V2”和“Enable cloud experience”开关开启,修改后须点击Apply & Restart生效。

docker compose 和 docker-compose 是两个命令
Windows 11 上装完 Docker Desktop 后,在 PowerShell 或 CMD 里执行 docker-compose --version 报错,不是因为你没装对,而是这个命令在新版本中已“退役”。Docker Compose v2 被重构成 docker CLI 的原生子命令,正确调用方式是 docker compose version(注意中间是空格,不是短横线)。v1 的 docker-compose.exe 不再随 Docker Desktop 自动部署,PATH 里自然找不到它。
如果你的项目脚本或 CI 流程还硬编码了 docker-compose,得改;如果只是手动敲命令,直接换用 docker compose 即可,功能完全一致,且默认启用更稳定的插件机制。
WSL 2 里 docker compose 不可用的真正原因
即使你在 Windows 上确认 docker compose version 能跑,在 WSL 2 的 Ubuntu/Debian 终端里仍可能提示 The command 'docker-compose' could not be found in this WSL 2 distro。这不是 WSL 没装好,而是 Docker Desktop 默认只向特定发行版(如 docker-desktop)注入 CLI 插件,而你的日常开发用的 Ubuntu 发行版没被自动集成。
- 检查是否启用了 WSL 集成:打开 Docker Desktop → Settings → Resources → WSL Integration,勾选你正在用的发行版(比如
Ubuntu-22.04) - 确保该发行版里有
/usr/bin/docker:它由 Docker Desktop 挂载提供,不是你自己 apt 安装的;若缺失,说明集成未生效 - 重启 WSL:运行
wsl --shutdown再重新打开终端,避免旧环境缓存干扰
手动修复 WSL 中 docker compose 命令不可用
即便开启 WSL 集成,某些发行版(尤其是从 Microsoft Store 安装的旧版 Ubuntu)仍可能缺少 docker compose 子命令支持,因为插件注册依赖 docker-cli 的扩展机制,而该机制在非官方挂载路径下不自动触发。
临时绕过方法(推荐验证用):
- 在 WSL 终端中直接运行
docker --help | grep compose,看是否列出compose子命令;没列出说明插件未加载 - 尝试强制触发插件发现:
docker plugin install docker/cli(通常失败,因已内置;但可排除插件系统阻塞) - 最稳方案:不依赖插件,用符号链接把 Windows 主机上的
docker-compose.exe暴露给 WSL:sudo ln -sf /mnt/c/Users/$USER/AppData/Local/Docker/cli-plugins/docker-compose.exe /usr/local/bin/docker-compose - 然后执行
chmod +x /usr/local/bin/docker-compose,之后docker-compose --version就能用了(注意:这是 v2 的 exe 包装器,行为等同docker compose)
Docker Desktop 设置里这两个开关不能关
WSL 中 docker compose 失效,80% 源于 Docker Desktop 后台配置被误调。以下两项必须保持启用状态:
-
Use the new Docker Compose V2(Settings → General):禁用它不会回退到 v1,而是让docker compose子命令彻底消失 -
Enable cloud experience(Settings → General):影响 CLI 插件元数据同步;关掉后,WSL 集成可能无法完成插件注册握手
改完设置记得点 Apply & Restart,不是只点 OK。很多问题卡在这一步——界面点了保存,但后台服务没真正 reload。


















