如何在openshift上从docker容器内部启动新的docker容器

如何在openshift上从docker容器内部启动新的docker容器,docker,openshift-origin,Docker,Openshift Origin,用例: 我想编写一个服务器应用程序,为每个客户启动一个docker容器,其中只包含特定的客户数据(用于数据保护)。该服务应在openshift或openshift源上运行 我搜索过的地方: 我已经知道的: 如果第一个容器是特权容器,或者来自主机的docker套接字和二进制文件链接到其中,我可以从docker容器内部启动docker容器 [编辑31.10.15]如:docker-run-v/var/run/docker.sock:/var/run/docker.sock… 我不知道的: 是否可

用例:

我想编写一个服务器应用程序,为每个客户启动一个docker容器,其中只包含特定的客户数据(用于数据保护)。该服务应在openshift或openshift源上运行

我搜索过的地方:

我已经知道的:

如果第一个容器是特权容器,或者来自主机的docker套接字和二进制文件链接到其中,我可以从docker容器内部启动docker容器

[编辑31.10.15]如:
docker-run-v/var/run/docker.sock:/var/run/docker.sock…

我不知道的:

是否可以在openshift上启动特权docker容器,或者从docker容器内部使用openshift api启动其他docker容器(具有特定的运行时配置)?顺便说一下,“妈妈”容器应该是可伸缩的。

阅读“”之后,我会考虑使用容器来代替嵌套容器。 下面的摘录是关于CI的,但可以应用于每个客户端的openshift启动容器(而不是CI启动容器)

你真的想让Docker加入Docker吗?或者您只是希望能够从CI系统运行Docker(特别是:构建、运行、有时推送容器和映像),而此CI系统本身位于容器中

最简单的方法是通过使用
-v
标志绑定安装Docker套接字,将其公开给CI容器

简单地说,当您启动CI容器(Jenkins或其他)时,不要在Docker中与Docker一起进行黑客攻击,而是从以下内容开始:

现在,这个容器可以访问Docker套接字,因此可以启动容器。除了启动“子”容器之外,它将启动“同级”容器


这是可能的-OpenShift也可以运行执行Docker和源代码构建的构建容器。在容器安全上下文(在pod定义中)上,将priviliged设置为true,并定义/var/run/docker.sock的卷装载


请注意,您需要具有启动priviliged容器的权限(不允许普通用户设置priv或主机装载),这可以通过将项目添加到“priviliged”安全上下文约束()来完成。在1.0.7中,有一个policy命令,它使oc policy将scc添加到服务帐户变得更容易。谢谢您的回复。我已经读过了,但没有链接,因为我是stackoverflow新手,只能添加两个链接;-)我的主要问题是,我不知道是否有可能在openshift上玩这个把戏。@ChristianWitt我同意,我只是觉得容器中的持久数据本身在容器中有点太危险。当然持久数据不应该留在容器中,但想法是为每个用户设置一个新的容器运行时(如不同的环境变量等)因此,正在运行的容器只能访问所需的数据。例如,容器a启动容器B时使用类似于
docker run-v/data/user1:/data…
的内容,容器C启动时使用类似于
docker run-v/data/user2:/data…
的内容。CI上同级容器的唯一问题是它们需要显式清理。If生成作业在容器C1中失败“作业管理器”将杀死该容器。但不是在构建过程中从C1生成的容器。我已经创建了一个新的服务帐户,并且可以将其添加到oc edit scc privileged中,但是在创建之后,我必须向我的服务帐户提供哪种策略?或者对项目的部署人员sa执行此操作可以吗?
docker run -v /var/run/docker.sock:/var/run/docker.sock ...