在几台计算机上的Docker

对于我在计算机上部署的使用Docker的云架构的研究。 (Nginx负载均衡一些Apache服务器运行一个简单的Php应用程序。

我想知道是否可以使用几台电脑来部署我的容器,以增加可用的功率。

(我正在使用Yosemite的MacBook Pro,我已经安装了boot2docker和Virtual box)

披露:我是Swarm Legacy和Swarm模式的维护者

编辑 :这个答案提到了Docker Swarm ,这是Docker Swarm的第一个版本。 从那以后,一个名为Swarm模式的新版本直接被包含在Docker引擎中,即使大的想法依然存在,在拓扑和特性方面也会有所不同。

是的,您可以在多台计算机上部署Docker,并将其作为单个资源池完全pipe理。 有几种解决scheme可用于使用docker在多台机器上协调您的容器。

您可以使用Docker Swarm , Kubernetes , Mesos / Marathon或Fleet 。 (可能还有其他的,因为这是一个快速发展的地区)。 还有像Amazon ECS这样的商业解决scheme。

在Swarm的情况下,它使用Docker远程API与远处的docker守护进程进行通信,并根据负载或一些额外的约束(其他系统类似于或多或less的function)来调度容器。 这是一个小型Swarm部署的例子。

Docker CLI + | | | 4000 (or else) | server +--------v---------+ | | +------------> Swarm Manager <------------+ | | | | | +--------^---------+ | | | | | | | | | | | | | | client | client | client | 2376 | 2376 | 2376 | | | +---------v-------+ +--------v--------+ +--------v--------+ | | | | | | | Swarm Agent | | Swarm Agent | | Swarm Agent | | Docker | | Docker | | Docker | | Daemon | | Daemon | | Daemon | | | | | | | +-----------------+ +-----------------+ +-----------------+ 

select其中的一个系统基本上是一个select:

  • 群集部署简单和维护
  • 调度程序的灵活性
  • API的完整性
  • 支持运行虚拟机
  • 容器组更高的抽象:Pods
  • networking模式(网桥/主机或覆盖或平面networking)
  • 与Docker远程API兼容

这主要取决于用例和正在运行的工作负载。 有关这些系统之间差异的更多细节,请参阅此答案 。

这听起来像集群,这是docker swarm做的(见其github回购 )。

它将Docker主机池变成一个虚拟主机。

例如,请参阅问题247:如何pipe理复制控制和负载平衡?