代码之家  ›  专栏  ›  技术社区  ›  A T

`docker并行启动?

  •  6
  • A T  · 技术社区  · 6 年前

    我在一个Docker网络上旋转1000个容器,都来自同一个Docker图像。

    目前需要很长时间才能部署。我把这个过程分成 docker create docker start docker run .

    有没有办法把集装箱平行旋转起来?-乐于在编程界面(Go,C,whatever)中工作,或使用CLI命令。

    相关: Can Docker Engine start containers in parallel [三年前询问并回答]

    2 回复  |  直到 6 年前
        1
  •  3
  •   BMitch    6 年前

    使用Swarm或K8s部署容器只是在使用start命令部署大量容器的基础上添加了一个抽象层,它们不会加快进程(只会使管理更容易),所以我不确定为什么这么多人会很快为您的问题推荐这个方法。更多的抽象层不能加快解决方案的速度。它们所允许的是水平扩展,因此如果您可以将这些容器分布到更多docker主机上,编排解决方案可以使管理更容易,并为您提供一些从任何故障中自动恢复的功能。

    run命令是create/start的包装器。所有这些docker命令都是dockerd的REST API的小包装。您可以直接访问该API,但可能需要花费时间来设置名称空间,包括IPAM和iptables的网络规则。我不知道任何并行API会加速许多容器的启动。加快速度的一个选项是删除一些命名空间隔离,或者查看用于创建命名空间的驱动程序的其他选项。切换到主机网络将完全跳过容器网桥网络和iptables规则,将容器放在与主机相同的网络命名空间中。

    除此之外,如果您想要更快的速度,您可能需要更好或更多的硬件,可能需要性能增强的新内核,或者您可能需要删除一些抽象层。如果你愿意自己处理一些网络和其他部分,你可以直接连接到docker使用的containerd后端。只要注意,这样做,你就会失去docker提供的一些功能。

        2
  •  0
  •   so-random-dude    6 年前

    我建议使用一个容器编排系统,如Kubernetes、Docker Swarm、Nomad(按我个人偏好的顺序),具有多节点、高可用性配置。Docker swarm的安装和运行要比流行的Kubernetes(K8s)简单得多