创build多个Docker容器

我必须在不同的主机上创build大量的Docker容器(例如,3个主机上的每个容器都有50个容器)。 这些容器都具有相同的图像,configuration等,只有每个容器的networking地址和ID应该不同(所以基本上我想创build一个巨大的虚拟容器networking)。 有没有办法做到这一点?

我已经看过像Helios和Kubernetes这样的技术,但是他们似乎只在每个代理上部署了一个容器。 我想在Helios创造许多不同的工作,然后把他们每一个部署到它的代理,但对我来说这似乎有点肮脏。

对于Docker特定的解决scheme,可以使用Swarm和Compose。

创build3个节点的Docker Swarm集群,并将您的环境更改为该Swarm。 (下面假设每个主机都在2375上进行监听,这对于专用networking来说是可以的,但是您需要TLS设置并切换到2376以获得更高的安全性。)

cat >cluster.txt <<EOF node1:2375 node2:2375 node3:2375 EOF docker run -d -P --restart=always --name swarm-manager \ -v ./cluster.txt:/cluster.txt \ swarm manage file:///cluster.txt export DOCKER_HOST=$(docker port swarm-manager 2375) 

在docker-compose.yml中定义你的服务,然后运行docker docker-compose scale my-service=150 。 如果您的Swarm使用默认的传播策略进行设置,它将根据每个主机上正在运行(或停止)的容器的数量在3台主机上进行分配。

 cat >docker-compose.yml <<EOF my-app: image: my-app EOF docker-compose scale my-app=150 

请注意,docker的缺点 – 构build其他工具,直到你重新运行它不会纠正中断。

这正是Kubernetes非常适合的用例types。

您应该使用副本集 。 创build副本集时,可以指定一个模板,告诉系统如何创build每个容器实例以及所需数量的副本。 然后,它会在集群中可用数量的节点中创build该数量的副本。

一个需要注意的是,默认情况下,Kubernetes只允许你有~100个豆荚/节点,但是如果你需要更多的话,你可以用一个命令行标志来改变这个数字。