创建多个Docker容器

创建多个Docker容器,docker,containers,kubernetes,helios,orchestration,Docker,Containers,Kubernetes,Helios,Orchestration,我必须在不同主机上创建大量Docker容器(例如,3台主机上各50个容器)。这些容器都有相同的映像、配置等,只有每个容器的网络地址和ID应该不同(因此基本上我想创建一个巨大的虚拟容器网络)。 有没有办法做到这一点 我看过Helios和Kubernetes等技术,但它们似乎只在每个代理上部署一个容器。我想在Helios中创建许多不同的作业,然后将它们部署到其代理,但这对我来说似乎有点脏。这正是Kubernetes非常适合的用例类型 你应该使用一个。创建副本集时,指定一个模板,告诉系统如何创建每个容

我必须在不同主机上创建大量Docker容器(例如,3台主机上各50个容器)。这些容器都有相同的映像、配置等,只有每个容器的网络地址和ID应该不同(因此基本上我想创建一个巨大的虚拟容器网络)。 有没有办法做到这一点


我看过Helios和Kubernetes等技术,但它们似乎只在每个代理上部署一个容器。我想在Helios中创建许多不同的作业,然后将它们部署到其代理,但这对我来说似乎有点脏。

这正是Kubernetes非常适合的用例类型

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


一个警告是,默认情况下,Kubernetes只允许您拥有~100个pod/节点,但如果需要更多,您可以使用命令行标志更改此数字。

对于Docker特定的解决方案,您可以使用Swarm和Compose

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


请注意,docker compose相对于其他工具的缺点是,在重新运行之前,它不会纠正停机。

Kubernetes 1.2默认情况下允许约100个pod/节点,这在您的情况下应该足够了,而无需更改标志。
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)
cat >docker-compose.yml <<EOF
my-app:
  image: my-app
EOF
docker-compose scale my-app=150