在Docker Swarm模式中,复制服务的时间是否超过可用主机的数量?

我一直在研究将在Docker 1.12中提供的新Docker Swarm模式。 在这个Docker Swarm模式演练video中,他们创build了一个由单个Nginx容器组成的简单的Nginx服务。 在video中,他们在Swarm集群中有4个节点。 在扩展演示期间,他们将复制因子增加到10,因此在群集中的所有4台机器上创build了10个Nginx容器副本。

我知道video只是一个演示,但在现实世界中,创build容器(或服务)的更多副本比Swarm集群中的节点多么重要? 这似乎是毫无意义的,因为在同一台机器上的两个容器将共享那台机器有限的计算资源。 我没有得到什么好处。

所以我的问题是,复制Docker服务或容器超出Swarm集群中的节点数量是否有任何实际的好处?

谢谢

这取决于应用程序如何处理线程和多个请求。 单线程应用程序或一次只处理一个请求的作业可以使用一部分操作系统资源,并受益于在单个主机上运行多个实例。 已经被调整为同时处理请求并且充分利用操作系统的应用程序将看不到任何益处,并且实际上将招致带走资源来运行应用程序的多个实例的惩罚。

一个好处是可以执行实时的零停机软件更新。 有关滚动更新,请参阅Docker 0.12rc2 Swarm教程

你有一个RabbitMQ或其他队列系统的数据负载较高。 您可以启动更多容器,而不是节点来处理RabbitMQ上的高数据负载。

当您复制服务时,硬件资源约束不是唯一需要考虑的事情。

一个简单的例子就是如果你有一个提供安全细节的服务。 这个服务的资源消耗会很低(从Db / Cache读取一条logging并发送出去)。 但是,如果有20或30个请求被同一个服务处理,请求将被排队。

是的,有更好的方法来实现我的例子,但我相信足以说明为什么可以在同一主机/节点上复制服务。