我目前正在使用Docker运行Jenkins。在尝试构建Docker应用程序时,我面临是否应该在Docker(Dind)中使用Docker的疑问,方法是绑定/var/run/docker.sock文件,或者在我的Jenkins Docker中安装另一个Docker实例。实际上,我以前曾看到过,不建议使用docker.sock以外的其他方式。
除了不污染主机,我实际上不明白为什么我们应该使用主机上的docker守护进程以外的其他东西。
答案 0 :(得分:0)
“ docker容器中的詹金斯需要docker”案例的最佳解决方案是将您的主机添加为jenkins中的节点(从属)。这将使每个构建步骤(实际上是所有步骤)都在您的主机中运行。我花了一个月的时间找到完美的设置。
在jenkins容器中安装Docker套接字:您将失去上下文。您要在映像中复制的文件位于jenkins容器中的工作区中,并且您的docker在主机上运行。 COPY肯定会失败。
在jenkins容器中安装docker客户端:您必须更改官方的jenkins映像。增加了复杂性。而且您也会失去上下文。
将主机添加为jenkins节点:完美。你有问题。请勿更改官方图片。
答案 1 :(得分:-1)
在不完全理解为什么需要在Docker中使用Docker的情况下-考虑到构建实际映像的环境,我怀疑您需要满足一些特殊要求,我是否建议您分阶段构建Docker映像?您可能会发现它很有用,因为它使您能够首先构建建筑环境,然后构建实际的图像(因此名称为“ multistage-building”)。在此处查看:https://docs.docker.com/develop/develop-images/multistage-build/