能否创建一个包含一个或多个容器的Docker容器?

8

我想创建一个Docker容器,其中包含一个或多个容器。Docker能够实现这一点吗?


为什么你要这样做?你要在 Docker 容器中实现一种新类型的容器吗?在我看来,Docker 并不是为此目的而设计的,而是为开发人员提供可移植性和与其他应用程序的兼容性的平台。 - Ko2r
我有4个容器,每个容器都依赖于另一个容器。我想通过添加最依赖的容器来创建一个镜像。所以,我的期望是,例如:A、B、C、D是容器。依赖关系如下:A->B->C->D。我只想包含D,这样其余的就可以自动完成了。 - user405398
嗯,我明白了!我认为这不是一个好的做法,因为如果您能够这样做,那么包含的容器(如果我没错,是A、B、C在D中)将无法从其他容器访问...你不是失去了Docker的共享原则吗?为什么不把4个容器打包并部署到一个Docker实例中,你真的只需要一个镜像吗? - Ko2r
1个回答

22
运行Docker内部的Docker是完全可行的。主要的事情是您需要使用额外特权(以--privileged=true开头)运行外部容器,然后在该容器中安装Docker。
查看此博客文章以获取更多信息:Docker-in-Docker
其中一个潜在用例在这篇文章中描述。该博客介绍了如何在Jenkins Docker容器中构建Docker容器。
然而,Docker内部的Docker并不是解决此类问题的推荐方法。相反,推荐的方法是创建“兄弟”容器,如在这篇文章中描述的那样

2
FYI,您不再需要那个教程中的所有步骤。只需将容器运行为--privileged=true,然后在容器内运行apt-get install docker.io即可。 - Usman Ismail
1
@UsmanIsmail - 非常好,谢谢!我已经有一段时间没有使用Docker-in-Docker了。 - wassgren
“兄弟”容器可能会导致孤儿,而嵌套的容器则不会。我说得对吗?请参见 https://dev59.com/iKbja4cB1Zd3GeqPgnUS。 - Gili
我该如何在Dockerfile中提及这个以创建镜像?@wassgren - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接