如何与DinD容器共享Windows主机目录?

时间:2019-06-30 09:39:54

标签: docker docker-volume dind

我在Windows 10主机上安装了Docker。 我在Docker中运行Jenkins,并且拥有Dockerized管道。 我想与由dockerized管道生成的DinD容器共享来自主机Windows机器的~/.m2/repository Maven缓存。

问题是我无法在Windows上正常工作(同样适用于OSX,如下所示)。

所以,我尝试的是:

  

docker run -v c:/Users/user/.m2/repository:/ repo -v /var/run/docker.sock:/var/run/docker.sock --rm -it docker sh

产生第一个容器,我可以检查ls /repo是否为空。然后,我尝试执行完全相同的命令来运行DinD

  

docker run -v c:/Users/user/.m2/repository:/ repo -v /var/run/docker.sock:/var/run/docker.sock --rm -it docker sh

命令失败,并显示:

  

docker:来自守护程序的错误响应:无效模式:/ repo。

在Windows驱动器名称之后,好像linux的docker不喜欢:冒号。好的,我可以尝试将c:/替换为/c/,然后再次尝试使用相同的命令运行两个docker containerws:

  

docker run -v /c/Users/user/.m2/repository:/repo -v /var/run/docker.sock:/var/run/docker.sock --rm -it docker sh#执行两个次

现在它开始了,但是只有第一个容器看到非空的/repo。如何在Windows上解决此问题?这两个容器都看到docker socket /var/run/docker.sockdocker ps都起作用),但是Maven缓存第二秒钟是空的/repo(DinD容器)。

PS:我已经测试过类似的技巧在OSX上可以正常工作:

docker run -v /Users/user/.m2/repository:/repo -v /var/run/docker.sock:/var/run/docker.sock --rm -it docker sh

0 个答案:

没有答案