经过一些研究,冷静和思考,我意识到Docker-in-Docker并不是 真正 的“ in- in-”,而是“ Docker-next-to-
Docker”。
使一个容器能够运行另一个容器的技巧是
/var/run/docker.sock通过一个卷共享:
-v/var/run/docker.sock:/var/run/docker.sock
然后
docker容器中的客户端实际上在主机上调用Docker。
卷源路径(位于的左侧
:)并不指向中间容器,而是指向主机文件系统!
在意识到这一点之后,解决方法是使
workspace主机文件系统和Jenkins(中间)容器中的Jenkins 目录路径相同:
docker run -d --network=host ... -v /var/jenkins_home:/var/jenkins_home
瞧!有用。(我创建了一个符号链接而不是移动它,似乎也可以使用。)
如果您正在看同事的Mac,这会有点复杂,因为Docker在此处的实现方式有所不同-它在基于Alpine
Linux的VM中运行,但假装没有。(对此不是100%的确定。)在Windows上,我读到这些路径还有另一层抽象-
映射
C:/somewhere/...到类似Linux的路径。
我希望我可以节省一些人的时间:)



