我在 Docker 容器中运行 Jenkins。我想知道 Jenkins 容器是否也可以作为 Docker 主机?我正在考虑的是从 Jenkins 内部为每个集成测试构建启动一个新的 docker 容器(启动数据库、消息代理等)。因此,在集成测试完成后应该关闭容器。是否有理由避免以这种方式从另一个 docker 容器中运行 docker 容器?
原文由 Johan 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在 Docker 容器中运行 Jenkins。我想知道 Jenkins 容器是否也可以作为 Docker 主机?我正在考虑的是从 Jenkins 内部为每个集成测试构建启动一个新的 docker 容器(启动数据库、消息代理等)。因此,在集成测试完成后应该关闭容器。是否有理由避免以这种方式从另一个 docker 容器中运行 docker 容器?
原文由 Johan 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在一篇文章中,实现了楼主提出的问题。
(一)Jenkins 与 CI/CD | 容器化启动 Jenkins with docker in docker
但是我遇到了新的问题,如何使用 Docker Compose?
如何在 Docker 启动的 Jenkins 容器中支持 Docker Compose 功能?
我之前回答了一个类似的问题,关于 如何在 Docker 中运行 Docker 容器。
在 docker 中运行 docker 绝对是可能的。最主要的是你
run
具有 额外权限 的外部容器(以--privileged=true
开始),然后在该容器中安装 docker。查看此博客文章以获取更多信息: Docker-in-Docker 。
此条 目中描述了一个潜在的用例。该博客描述了如何在 Jenkins docker 容器中构建 docker 容器。
但是,Docker 里面的 Docker 并不是解决这类问题的推荐方法。相反,推荐的方法是创建 本文所述的“兄弟”容器
因此,在 Docker 中运行 Docker 被许多人认为是解决此类问题的一种很好的解决方案。现在,趋势是改用“兄弟”容器。有关更多信息,请参阅 此页面上@predmijat 的答案。
原文由 wassgren 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答2.4k 阅读✓ 已解决
2 回答836 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答1.4k 阅读
2 回答1.3k 阅读
1 回答1.6k 阅读
1.1k 阅读
如果可能的话,应该尽量避免在 Docker(又名 dind )中运行 Docker。 (下面提供了源代码。)相反,您希望为您的主容器设置一种方式来生成 同级 容器并与之通信。
Jérôme Petazzoni—— 使 Docker 可以在 Docker 容器内运行的特性的作者——实际上写 了一篇博文说不要这样做。他描述的用例与 OP 的 CI Docker 容器的确切用例相匹配,该容器需要在其他 Docker 容器中运行作业。
Petazzoni 列出了 dind 麻烦的两个原因:
从那篇博客文章中,他描述了以下替代方案,