创建多个Docker容器

时间:2016-06-07 12:04:35

标签: docker containers kubernetes helios orchestration

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

创建包含3个节点的Docker Swarm集群,并将您的环境更改为该Swarm。 (以下假设每个主机正在侦听2375,这对于专用网络是可以的,但是您需要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-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-compose的缺点是在重新运行之前它无法解决中断问题。