如何在所有Docker Swarm节点上运行相同的容器

我只是在Docker Swarm上下功夫,因为我们正在寻找方法来configuration我们的计算集群,使其更容易集装箱化。 基本上我们有一个16台计算机的小农场,我希望能够让每个节点拉下相同的图像,运行相同的容器,并接受主节点上运行的OpenMPI程序的作业。

没有什么是真正的OpenMPI特有的,只是容器必须能够打开SSH端口,并且主机必须能够login到它们。 我已经有了一个单一的Docker容器,它的工作原理。

现在我正在学习Docker Machine和Docker Swarm来pipe理16个节点。 从我所知道的情况来看,一旦build立了一个群,我就可以将其设置为DOCKER_HOST(或使用-H)发送“docker run”,并且swarmpipe理器将决定哪个节点运行所请求的容器。 我基本上使用一个简单的节点列表工作,而不是发现服务搞乱,到目前为止这么好。

但我实际上想要在一个命令中的所有节点上运行相同的容器。 这可能吗?

Docker 1.12引入全局服务并传递--mode global来运行命令Docker将服务调度到所有节点。

使用Docker Swarm,您可以使用标签和负相关性filter来获得相同的结果:

 openmpi: environment: - "affinity:container!=*openmpi*" labels: - "com.myself.name=openmpi"