2016-11-26 129 views
0

我已经建立了一个基于Docker-Multinode的简单Kubernetes测试环境。我还建立了一个基于Ubuntu的相当大的Docker,它包含我的几个工具。它们中的大多数都是用C++编写的,并且对系统上安装的库有相当多的依赖关系。Kubernetes:如何在docker B上运行docker B的bash命令A

我的目标是在多个节点之间分发传统批处理任务。我喜欢Docker-Multinode的简单设置,但现在我想知道这对我来说是否正确 - 因为我在其他Docker映像中有我的实际遗留应用程序。

如何从docker A(多节点worker docker)在docker B(Ubuntu docker上使用我的旧版工具)上运行bash命令?或者这是不可取的?

编辑:为了说明,docker A(工人多节点工作者docker)和docker B(旧版工具Ubuntu docker)在同一台主机上运行(每台机器上都有两台)。

回答

0

您的问题确实不清楚:

Kubernetes运行Docker容器;任何码头集装箱。

Kubernetes本身在Docker中运行,在'多节点'中Kubernetes需要的依赖关系在Docker中运行,但在所谓的自举泊坞窗中运行。

现在,在您的问题中Docker A运行的位置与Docker B的位置并不清楚。 此外,如果您想'分配'批处理作业,那么每个作业都应该是一个独立的作业,它在自己的容器中运行,容器A不应该依赖于容器A.

如果您需要Docker容器B中的依赖项(库)来运行您的作业,那么您实际上只需要使用Docker容器B作为作业容器A的基本映像。码头图像是分层的,所以即使它很大,如果另一个容器使用它作为基本图像,它只会被整体加载一次,因此,如果有5个容器类型A以B为基础图像,这不是问题,因为基础图像只加载一次。

如果您确实需要一个容器与另一个进行通信,那么您应该构建一个API以将命令从一个传递到另一个(某种RESTful API,可以通过HTTP调用进行通信以将流程的请求传递给在一个容器中运行并返回结果)

我希望这有助于

+0

谢谢,我已经更新了我的问题,以澄清泊坞窗A和B在每个服务器上同时运行两个。所以我考虑的一件事就是使用docker socket让worker docker启动一个兄弟(而不是子)docker B.但实际上我不知道docker-multinode使用哪个映像。可能它也不是Ubuntu映像。哪个图像以及如何在docker-multinode示例中更改它? – benjist

+0

我仍然不明白你为什么要从另一个容器运行一个容器。目标是什么?在Kubernetes中运行Pods(无论它们是由Deployment,PetSets还是Jobs控制的Pod)。我不确定你的Docker容器A在这里需要做什么;它只是运行Kubernetes服务,然后使用Kubernetes命令行来运行您的B容器。 – MrE

+0

我的意思是,我希望使用容器A及其中的服务,并将所有遗留的东西安装到其中。然后我不需要容器B.但是我不知道A具有哪个图像,它被埋在了bash脚本中,并且看起来有几个不同。 – benjist

相关问题