我们正在运行mesos集群和jenkins来实现持续集成工作流。Jenkins是使用mesos插件配置的。
之前,我们在mesos容器中构建了docker镜像。现在我们切换到docker容器来构建我们的docker镜像。
我一直在寻找在一个带有dind镜像的docker容器中构建我们的docker镜像的好处,就像在docker hub上找到的这个"dind-jenkins-slave“一样。
使用dind,您会在共享主机的docker.sock时失去缓存机会。使用dind时,您还必须推送特权参数。
仅仅共享主机的docker.sock的缺点是什么?
发布于 2015-05-15 01:07:44
我使用的是共享docker.sock方法。我看到的唯一缺点是安全性-当你可以运行任何docker容器时,你可以在主机上做任何你想做的事情。但是,如果您信任创建作业的人,或者可以控制可以从jenkins运行哪些选项的docker容器,那么提供对主docker守护进程的访问是一个简单的解决方案。
发布于 2015-05-15 01:24:39
这取决于你在做什么,真的。为了让我们的jenkins作业真正隔离,以便我们可以并行运行任意多个作业,我们切换到了DinD。如果你共享主机套接字,你仍然只有一个docker守护进程-端口冲突,从单独的作业中拉/推多个镜像,以及一个依赖于镜像或构建的作业也被另一个作业弄乱,这些都是问题。
为了解决缓存问题,我创建了dind容器并保留它。我跑步
docker启动-a dindslave || docker运行工作区${ -v }:/data my/dindimage jenkinscommands.sh
然后,jenkins只需将其命令写入jenkinscommands.sh,并在每次重新启动容器。当你移除容器的时候,你也移除了你的缓存,如果你想要的话就不要在任务之间共享缓存……但您不必考虑作业之间的相互干扰,也不必确保它们在同一主机上运行。
https://stackoverflow.com/questions/30239011
复制相似问题