【问题标题】:On Windows, bind-mount volumes behave differently in docker-compose than docker run在 Windows 上,绑定挂载卷在 docker-compose 中的行为与 docker run 不同
【发布时间】:2018-09-24 02:51:56
【问题描述】:

启动 Linux 容器时(详情如下)。我看到docker run ... 成功,但docker-compose up 未能抱怨绑定安装路径。感觉就像docker run 正在将卷绑定到 linux VM(通过 Hyper V)

Docker 编写错误

无法为服务注册器创建容器:b'Mount denied: 源路径“\\var\\run\\docker.sock:/tmp/docker.sock” 不是有效的 Windows 路径'

以下是有关我如何启动容器的详细信息:

Docker 运行(按预期工作):

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

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    我在这方面工作太久了。在这里问了一个问题,然后过了一会儿找到了我的答案。 叹息我希望我学到的东西可以帮助别人。

    我遇到了 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 禁用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-08
      • 2019-01-09
      • 2021-07-16
      • 2017-05-11
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      相关资源
      最近更新 更多