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

Docker Compose在Mac正常运行但Windows报错的解决求助

问题

我使用以下docker-compose.yaml文件,该文件在Mac上可成功构建运行,但在Windows电脑上执行失败:

services:
  mongo:
    image: mongodb/atlas
    privileged: true
    command: |
      /bin/bash -c "atlas deployments setup --type local --port 27778 --bindIpAll --username root --password root --force && tail -f /dev/null"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 27778:27778

两台设备均安装了Docker Desktop,分别使用Iterm2和Windows PowerShell操作。我尝试将command修改为如下形式,但仍出现错误:

command: sh -c "atlas deployments setup --type local --port 27778 --bindIpAll --username root --password root --force && tail -f /dev/null"

Windows电脑上的报错信息为:

3/3: Creating your deployment local844... 
mongo-1  | Error: exit status 127:

为何相同配置在Mac上运行正常?求问如何解决该问题?

原因分析与解决方案

原因

  • Docker Socket路径兼容性问题:Mac的Docker Desktop基于Linux虚拟机运行,/var/run/docker.sock路径可直接被容器内工具识别调用;而Windows上Docker的实际socket路径为//./pipe/docker_engine,原配置的路径映射无法让容器内的atlas工具正确访问宿主机Docker服务,导致命令执行失败(exit status 127通常表示命令无法找到或执行权限不足)。
  • 宿主机权限限制:Windows PowerShell若未以管理员身份运行,会限制对Docker socket的访问权限,进一步加剧调用失败的情况。

解决步骤

  1. 修改Docker Socket映射路径
    更新docker-compose.yaml中的volumes配置,替换为Windows专属的socket路径:
    volumes:
      - //./pipe/docker_engine:/var/run/docker.sock
    
  2. 以管理员身份运行PowerShell
    右键点击PowerShell,选择「以管理员身份运行」后再执行docker-compose up命令,避免权限不足导致的访问失败。
  3. 验证WSL2后端配置
    打开Docker Desktop设置,确认已启用WSL2后端,且对应的WSL发行版(如Ubuntu)已被Docker Desktop识别并集成。
  4. 保留原有command格式
    无需修改command部分,原有的/bin/bash -c写法在容器内的Linux环境中完全兼容,核心问题解决后即可正常运行。

内容的提问来源于stack exchange,提问作者TkrA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:12:36