首页 > 解决方案 > 如何在不使用 docker-in-docker 的情况下在 jenkins 管道中使用 docker

问题描述

docker-in-docker的作者在此博客中建议不要将此图像用于 CI 目的: jpetazzo/Using Docker-in-Docker for your CI or testing environment?三思而后行

为什么 Jenkins 在 Jenkins 用户手册(安装部分)中使用 docker-in-docker 在以下链接中: 安装 Jenkins(您可以在第 4 步中看到它)

他们为什么不直接使用卷来使用 docker daemon,如下所示:

--volume /var/run/docker.sock:/var/run/docker.sock

使用 docker-in-docker 有什么具体原因吗?

如果您同意它应该在不使用 docker-in-docker 的情况下完成,请告诉我如何这样做,实际上我已经尝试过没有运气,我在这里遇到了另一个问题:如何找出哪个用户正在访问 /var/run/docker.sock 这将导致权限被拒绝错误

标签: dockerjenkinscontinuous-integrationdocker-in-docker

解决方案


@tashkhisi - 正如https://stackoverflow.com/a/63200614/8723275中已经提到的,这取决于您尝试使用的 Jenkins 映像。如果您将使用jenkinsci/bleocean - 它已经在管道内有 docker,但您需要自己做。如果您更喜欢使用jenkins/jenkins图像 - 您可以在以下讨论中找到答案。一种可能的解决方案是构建您自己的 Jenkins 映像并在映像中动态安装所有需要的插件。


推荐阅读