共享docker.sock或docker中的docker(dind)

vjhs03f7  于 2021-06-21  发布在  Mesos
关注(0)|答案(2)|浏览(333)

我们正在运行一个mesos集群和jenkins的持续集成工作流。jenkins配置了mesos插件。
以前我们在mesos容器中构建docker图像。现在我们切换到docker容器来构建docker图像。
我一直在寻找在docker容器中构建docker图像的优势,这个容器中有dind图像,比如docker hub上的“dind jenkins slave”。
使用dind,共享主机的docker.sock时将失去缓存机会。使用dind还必须推送privileged参数。
共享主机的docker.sock有什么坏处?

hujrc8aj

hujrc8aj1#

这取决于你在做什么,真的。为了让Jenkins的工作真正孤立起来,这样我们就可以并行地运行任意多个任务,我们改用了dind。如果共享主机套接字,仍然只有一个docker守护进程-端口冲突,从不同的作业中拉/推多个映像,以及一个作业依赖另一个作业处理的映像或构建都是问题。
为了避免缓存问题,我创建了dind容器并将其保留。我跑了
docker start-a dindslave | | docker run-v${workspace}:/data my/dindimage jenkinscommands.sh
然后jenkins只需将其命令写入jenkinscommands.sh,然后每次都重新启动容器。当你移除容器时,你也移除了你的缓存,如果你想要的话,你不会在作业之间共享缓存。。。但您不必考虑作业之间的相互干扰或确保它们在同一台主机上运行。

j13ufse2

j13ufse22#

我正在使用sharing docker.sock方法。我看到的唯一的缺点是安全性—当您可以运行任何docker容器时,您可以对主机做任何您想做的事情。但是,如果您信任那些可以创建作业或者可以控制哪些docker容器和哪些选项可以从jenkins运行的人,那么允许访问主docker守护进程是一个简单的解决方案。

相关问题