为什么我的Jenkins容器agent可以在容器内并没有docker的情况下,在流水线内依然可以运行docker? jenkins是如何做到的?
本来是我一直把docker以及docker.sock挂载到容器中去的,今天突发奇想去掉了挂载,发现依然可以执行,真的很神奇。
这AI的回答没太看懂,什么叫容器里即便没有docker,但jenkins代理安装了docker, jenkins agent不是运行在这个临时run起来的容器中的么。
我使用docker agent templet来执行job。
这里是我在一个流水线的执行过程中,进入到容器里,可以看到容器里是没有docker的。
但神奇的是,流水线中代码的 sh'docker xxxx' ,是可以执行的。
同时还有一点神奇的,在同一个jenkins集群内,我为多个docker host都配置了同样的agent templet,区别是lable不同,当我调度docker host为其他主机的label, 流水线里执行sh'docker info' ,可以观察到,无论容器最终在哪个docker host上执行,流水线内通过docker info可以看到,docker.sock都是指向同一台主机的。