Docker-Swarm只能在故障转移模式下运行吗?

我面临的情况是,我需要在Docker容器中运行大约100个不同的应用程序。 在一个硬件上运行全部100个容器是不合理的,所以我需要将这些应用程序分散到多台机器上。 据我所知,docker swarm只是为了扩展,这意味着当我在群集中运行我的容器时,所有的100个容器将自动部署并在docker-swarm的每个节点上启动。 但这不是我正在寻找的。 我想拆分应用程序,例如在节点1上运行50,在节点2上运行50。

问题1:有没有办法configurationdocker-swarm,我的应用程序会自动分配到空闲资源最多的节点上?

问题2: docker swarm中是否有一种故障切换模式,可以在一个节点上停止一个容器,并在另一个节点上尝试启动它,以防出现问题?

所有100个容器将自动部署,并在我的docker群的每个节点上启动

这不是真的。 当在一个群中部署100个容器时,容器将分布在群中的可用节点上。 您将主要在所有节点上获得容器的均匀分布。

问题1:有没有办法configurationdocker-swarm,我的应用程序会自动分配到空闲资源最多的节点上?

在部署容器之前,Docker swarm不会检查节点上可用的资源(内存,cpu …)。 容器的分布在每个节点上是平衡的,而不考虑每个节点上资源的可用性。

但是,您可以构build在节点上分发容器的策略。 如果您可以限制可以部署容器的位置,则可以使用放置约束 。 您可以标记具有大量资源的节点,并限制一些沉重的容器只能在这些节点上运行。

问题2:docker swarm中是否有一种故障切换模式,可以在一个节点上停止一个容器,并在另一个节点上尝试启动它,以防出现问题?

如果一个容器崩溃,docker群将确保一个新的容器启动。 同样,决定部署新容器的节点不能预先确定。