Docker 在多台计算机上

Docker on several computers

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

我想知道是否可以使用多台计算机来部署我的容器以增加可用功率。

(我使用的是带 Yosemite 的 MacBook Pro。我已经用 Virtual box 安装了 boot2docker)

这听起来像是聚类,这就是 docker swarm does (see its github repo)。

It turns a pool of Docker hosts into a single, virtual host.

参见示例issue 247: How replication control and load balancing being taken care of?

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

Edit: This answer mentions Docker Swarm Legacy, the first version of Docker Swarm. Since then a new version called Swarm mode was directly included in the docker engine and behaves a bit differently in terms of topology and features even though the big ideas remain.

是的,您可以在多台机器上部署 Docker,并将它们作为一个资源池进行管理。您可以使用多种解决方案在多台机器上使用 docker.

编排容器

您可以使用 Docker Swarm, Kubernetes, Mesos/Marathon or Fleet. (there might be others as this is a fast-moving area). There are also commercial solutions like Amazon ECS

在 Swarm 的情况下,它使用 Docker 远程 API 与远程 docker 守护进程通信,并根据负载或一些额外的约束(其他系统是具有或多或少的特征)。这是一个小型 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      |  
    |                 |    |                 |    |                 |          
    +-----------------+    +-----------------+    +-----------------+

选择其中一个系统基本上是在以下选项之间进行选择:

  • 集群部署简单和维护
  • 调度程序的灵活性
  • API
  • 的完整性
  • 支持 运行 个 VM
  • 容器组的更高抽象:Pods
  • 网络模型(Bridge/Host or Overlay or Flat network)
  • 与 Docker 遥控器的兼容性 API

这主要取决于用例和您的工作负载类型 运行。有关这些系统之间差异的更多详细信息,请参阅此