我有一个非常简单的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似乎无法找到主机目录。
答案 0 :(得分:0)
重置Docker守护程序凭据共享设备窗口后提示,然后在重新共享磁盘后它再次开始工作,即使它之前也是共享的。我怀疑共享磁盘到Docker不适用于共享完成后创建的目录(因此需要重新共享)但我不完全确定,会检查与docker引擎的人。
还有一件事,我还试图在Windows上从Linux子系统运行它并且它不起作用,我怀疑Linux子系统和Windows的权限可能不匹配或者docker引擎可能有bug,甚至导致在重新共享错误后,我不得不从Powershell运行它。