启动Linux容器时(详情如下)。我看到docker run ...
成功,但docker-compose up
无法抱怨绑定挂载路径。感觉docker run
绑定将卷挂载到linux VM(通过Hyper V)
Docker撰写错误
无法为服务registrator创建容器:b' Mount denied: 源路径" \\ var \\ run \\ docker.sock:/tmp/docker.sock" 不是有效的Windows路径'
以下是有关我如何启动容器的详细信息:
Docker Run(按预期工作):
docker run --network=host --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator consul://localhost:8500
Docker撰写:
registrator:
image: gliderlabs/registrator
command: "consul://consul:8500"
network_mode: host
volumes:
- /var/run/docker.sock:/tmp/docker.sock
操作系统:Windows 10 1709(操作系统内部版本16299.371) 适用于Windows的Docker:18.04.0-ce Docker撰写:1.21.0
答案 0 :(得分:5)
我一直在研究这个问题太久了。在这里问了一个问题,然后发现我的答案。 叹息我希望我学到的东西可以帮助别人。
我遇到了docker compose GitHub Issue #4303,其中一条指导就是设置这个环境变量:
SET COMPOSE_CONVERT_WINDOWS_PATHS=1
在调用docker-compose up
的shell中执行此操作会使compose表现得像run一样。现在,容器绑定安装Linux VM主机路径,而不是尝试映射Windows主机路径。对我来说没有意义,但它确实有效。
来自Compose docs:
COMPOSE_CONVERT_WINDOWS_PATHS 在卷定义中启用从Windows样式到Unix样式的路径转换。 Windows上的Docker Machine和Docker Toolbox的用户应始终设置此项。默认值为0.支持的值:true或1表示启用,false或0表示禁用。