【问题标题】:When using docker option --mount the target folder is seen as not absolute, while there is no issue when using -v使用 docker 选项时 --mount 目标文件夹被视为不是绝对的,而使用 -v 时没有问题
【发布时间】:2019-07-29 13:32:40
【问题描述】:

我正在使用 docker,但在使用 --mount 而不是 -v 安装 docker 卷时遇到了问题。在我看来,弹出的错误无效,但可能我在这里遗漏了一个小细节。

在 --mount 场景中,我要将容器中创建的图像绑定到的路径被视为不是绝对的。

我在 Windows 10 机器上运行 Docker

我提取了 jenkins/jenkins:lts 映像并希望启动 2 个使用相同配置的容器。如前所述,我使用它只是为了玩弄 docker,并且正在探索音量系统的工作原理。

我所做的是创建一个用于共享配置的 docker 卷。

docker volume create jenkins_cfg

然后我尝试运行 2 个容器。第一个容器开始于:

docker run -d -p 8081:8080 --name jenkins2 -v jenkins_cfg:/var/jenkins_home jenkins/jenkins:lts

效果很好..

第二个容器开始于:

docker run -d -p 8085:8080 --name jenkin5 --mount source=jenkins_cfg,target=var/jenkins_home jenkins/jenkins:lts

这会导致错误 “C:\Program Files\Docker\Docker\Resources\bin\docker.exe:来自守护进程的错误响应:“卷”类型的挂载配置无效:挂载路径无效:“var/jenkins_home”挂载路径必须是绝对的。 请参阅 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'。”

另外 /var/jenkins_home 也不能正常工作。

虽然 -v 也要求相同的目标文件夹,但我认为该文件夹也可以在 --mount 的目标选项中工作。可能,我在这里忽略了一些东西......

【问题讨论】:

    标签: docker mounted-volumes


    【解决方案1】:

    我发现目标文件夹应该以//开头 所以 docker 命令看起来像

    docker run -d -p 8085:8080 --name jenkin5 --mount source=jenkins_cfg,target=//var/jenkins_home jenkins/jenkins:lts
    

    仍然不知道为什么必须添加//,也许有人可以澄清一下

    【讨论】:

      【解决方案2】:

      实际上挂载绑定就像将物理磁盘卷的一部分挂载到容器中。但是卷就像虚拟内存,没有容器你不能独立访问它们,但是绑定挂载可以独立访问

      您的挂载绑定应该是主机中的绝对路径

      希望这对您的事业有所帮助

      【讨论】:

      • 我现在的困惑是,在使用 --mount 选项时我必须使用 target=//var/jenkins_home 并且在 -v /var/jenkins_home 的情况下就足够了.这个 // 的使用似乎有点不合逻辑,虽然它没有在任何地方使用。也没有在互联网上看到的例子。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 2016-05-04
      • 2020-04-23
      • 1970-01-01
      相关资源
      最近更新 更多