2015-05-14 57 views
0

我们正在为持续集成工作流运行mesos群集和jenkins。 Jenkins配置了mesos插件。在docker(dind)中共享docker.sock或docker

以前我们在meos容器中构建了我们的码头图像。现在我们正在切换到码头集装箱以建立我们的码头图像。

我一直在寻找在码头集装箱内建造码头图像的优势,像码头集线器上发现的像这样一个“dind-jenkins-slave”的后期图像。

随着共享主机的docker.sock,你会失去缓存机会。并且,您还必须推送特权参数。

只是共享主机的docker.sock有什么缺点?

回答

0

我正在使用共享docker.sock方法。我看到的唯一缺点是安全性 - 当您可以运行任何码头集装箱时,您可以用主机完成所有任务。但是,如果您信任创建工作或可以控制哪些码头容器可以从jenkins运行哪些选项,那么允许访问主码头守护程序是一个简单的解决方案。

0

这取决于你在做什么,真的。为了让我们的詹金斯工作真正地分离开来,以便我们可以并行运行尽可能多的东西,我们切换到了DinD。如果您共享主机套接字,您仍然只有一个docker守护进程冲突,从单独的作业中拉出/推送多个图像,以及依赖于另一个作业也混淆的图像或构建的一个作业都是问题。

为了解决缓存问题,我创建了dind容器并将其放在一边。我跑

docker start -a dindslave || docker run -v $ {WORKSPACE}:/ data my/dindimage jenkinscommands.sh

然后jenkins将其命令写入jenkinscommands.sh并每次重新启动容器。当你删除容器时,你也会删除你的缓存,并且如果你想要的话你不会在作业之间共享缓存......但是你不必考虑相互干扰或者确保它们正在运行的作业在同一主机上。