0

我在玩 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:来自守护进程的错误响应:类型“volume”的安装配置无效:安装路径无效:'var/jenkins_home' 安装路径必须是绝对的。请参阅“C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help”。”

/var/jenkins_home 也无法正常工作。

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

4

2 回答 2

1

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

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

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

于 2019-07-29T14:49:41.953 回答
0

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

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

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

于 2019-07-29T15:01:22.797 回答