docker in docker? No, docker brother

解决方案

让我们退一步,你真的想要 Docker-in-Docker?或者当 CI 系统本身就是一个容器的时候你只是想要在 CI 系统中运行 Docker(具体为:构建、运行,有时 push 容器和镜像)。

我敢打赌,大多数人只是想要后者。你想要的一个解决方案是使得你的像 Jenkins 一样的 CI 系统能够启动容器。

最简单的方法就是通过使用 -v 参数来为你的 CI 系统暴露 Docker 的 socket。

简单的来说,当你启动你的 CI 容器( Jenkins 或者其他),而不是使用 Docker-in-Docker 来 hacking 一些东西,用这条命令启动它:

shell 复制代码
docker run -v /var/run/docker.sock:/var/run/docker.sock ...

现在这个容器将能够访问 Docker Socket,然后就能启动容器。它将启动"兄弟"容器而不是"子"容器。

如果你的 CI 使用 Docker 二进制脚本,你可以将它包含在你的 CI 镜像中或者从主机 bind-mount。例如:

shell 复制代码
docker run -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/bin/docker \
-ti ubuntu

这看起来就像 Docker-in-Docker,感觉起来也像 Docker---in-Docker,但它不是 Docker-in-Docker :当你的CI容器要创建更多容器时,这些容器将会在顶级 Docker 中被创建。你将不会与遇到嵌入的影响,构建缓存也将在多实例中共享。

相关推荐
心灵宝贝1 小时前
Mac 安装 JDK 8u281(JDK-8u281-1.dmg)详细步骤(附安装包)
java·macos·intellij-idea
記億揺晃着的那天1 小时前
从单体到微服务:如何拆分
java·微服务·ddd·devops·系统拆分
7ioik2 小时前
什么是线程池?线程池的作用?线程池的四种创建方法?
java·开发语言·spring
切糕师学AI2 小时前
Lombok 注解 @Slf4j
java·lombok
寻星探路2 小时前
JavaSE重点总结后篇
java·开发语言·算法
EAIReport2 小时前
自动化报告生成产品内嵌OA/BI平台:解决传统报告痛点的技术方案
java·jvm·自动化
二流子学程序6 小时前
Windows创建一个Docker镜像
docker·容器
向着光芒的女孩7 小时前
【IDEA】关不了的Proxy Authentication弹框探索过程
java·ide·intellij-idea
Filotimo_8 小时前
Spring Boot 整合 JdbcTemplate(持久层)
java·spring boot·后端
李慕婉学姐8 小时前
【开题答辩过程】以《“饭否”食材搭配指南小程序的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·spring·小程序