关于云:多台计算机上的Docker

Docker on several computers

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

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

(我正在将MacBook Pro与Yosemite一起使用。我已经将Boot2docker与Virtual box一起安装了)


披露:我是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或Fleet。 (可能还有其他人,因为这是一个快速移动的区域)。还有一些商业解决方案,例如Amazon ECS。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
                                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的完整性
  • 支持正在运行的虚拟机
  • 容器组的更高抽象:容器
  • 网络模型(网桥/主机或覆盖或平面网络)
  • 与Docker远程API的兼容性

这主要取决于用例和所运行的工作量。有关这些系统之间差异的更多详细信息,请参见以下答案。


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

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

例如,查看问题247:如何处理复制控制和负载平衡?