在Windows上,绑定装载卷在docker-compose中的行为与docker run不同

Kev*_*evM 5 docker docker-compose

启动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
Run Code Online (Sandbox Code Playgroud)

Docker撰写:

registrator:
  image: gliderlabs/registrator
  command: "consul://consul:8500"
  network_mode: host
  volumes:
   - /var/run/docker.sock:/tmp/docker.sock
Run Code Online (Sandbox Code Playgroud)

操作系统:Windows 10 1709(操作系统内部版本16299.371)适用于Windows的Docker:18.04.0-ce Docker撰写:1.21.0

Kev*_*evM 6

我一直在研究这个问题太久了.在这里问了一个问题,然后发现我的答案.叹息我希望我学到的东西可以帮助别人.

我遇到了docker撰写GitHub问题#4303,其中一条指导是设置这个环境变量:

SET COMPOSE_CONVERT_WINDOWS_PATHS=1
Run Code Online (Sandbox Code Playgroud)

docker-compose up正在调用的shell中执行此操作会使compose表现得像run一样.现在,容器绑定安装Linux VM主机路径,而不是尝试映射Windows主机路径.这对我来说没有意义,但它确实有效.

来自撰写文档:

COMPOSE_CONVERT_WINDOWS_PATHS在卷定义中启用从Windows样式到Unix样式的路径转换.Windows上的Docker Machine和Docker Toolbox的用户应始终设置此项.默认值为0.支持的值:true或1表示启用,false或0表示禁用.