【问题标题】:Docker-compose top level volume unable to find pathDocker-compose 顶级卷无法找到路径
【发布时间】:2026-02-24 05:15:01
【问题描述】:

我有一个非常简单的 docker-compose 设置,可以在我同事的计算机 (*) 上运行,但由于某些不明原因,它在我的计算机上不起作用。

这是我的 docker-compose.yml

version: '3.3'
services:

    ... there are other services that are starting successfully ...

    reporting:
      image: microsoft/dotnet:2.0-runtime
      hostname: reporting
      container_name: reporting
      volumes:
        - publish-output:/app
        command: dotnet /app/MocksGenerator.dll -s ${MSNAME_R} -p ${MSPORT_R} -c http://${CHOST} -m http://${MBHOST}${MSNAME_R}:${MBPORT}
        networks:
          - consul
        links:
          - mbreporting
          - consul
          - fabio
        depends_on:
          - mbreporting
          - consul
          - fabio
networks:
  consul:

volumes:
  publish-output:
    driver: local
    driver_opts:
      device: /mnt/d/Repositories/microservices.mocking/docker/PublishOutput
      o: bind

当我尝试使用“docker-compose up”启动它时,我从 docker-compose 收到错误信息。

错误:用于报告无法启动服务报告:安装卷“/var/lib/docker/volumes/betsreporting_publish-output/_data”时出错:使用选项安装卷时出错:type='' device='/mnt/ d/Repositories/microservices.mocking/docker/PublishOutput' o='bind': 没有这样的文件或目录

运行ls -la /mnt/d/Repositories/microservices.mocking/docker 产生

drwxrwxrwx 0 root root 4096 May 30 16:12 PublishOutput

所以主机目录肯定存在,但 docker-compose 似乎由于某种原因找不到它。为什么?

(*) 我的同事正在使用绑定类型的音量,我尝试了,但由于同样的原因也没有工作,所以我决定更改音量类型,但后来它似乎根本问题是 docker-compose 似乎找不到主机目录。

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    在提示重置设备窗口的 Docker 守护程序凭据共享后,然后在重新共享磁盘后,它再次开始工作,即使它之前也被共享过。我怀疑将磁盘共享到 Docker 不适用于在共享完成后创建的目录(因此需要重新共享),但我不完全确定,将与 docker 引擎人员核实。

    还有一件事,我也尝试从 Windows 上的 Linux 子系统运行它,但它没有工作,我怀疑 Linux 子系统和 Windows 的权限可能不匹配,或者 docker 引擎可能有错误,甚至导致重新共享后错误仍然存​​在,所以我不得不从 Powershell 运行它。

    【讨论】:

    • 是的,许多将 windows 文件夹共享到 linux docker 容器的弱点。您还可能遇到路径语法问题。