【问题标题】:Creating multiple Docker container创建多个 Docker 容器
【发布时间】:2016-06-08 10:25:13
【问题描述】:

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

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

【问题讨论】:

标签: docker containers kubernetes helios orchestration


【解决方案1】:

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

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

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

【讨论】:

  • Kubernetes 1.2 默认允许约 100 个 Pod/节点,这在您的情况下应该足够了,无需更改标志。
【解决方案2】:

对于 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 的缺点是它在重新运行之前无法纠正中断。

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 2022-01-05
    • 2016-05-19
    相关资源
    最近更新 更多