本文翻译自:Swarm mode overview

Docker Engine的集群模式,需要通过Docker releases GitHub repository安装v1.12.0以上版本。最新的Mac版及Windows Beta版亦可。

Docker引擎1.12包括Docker引擎原生的集群管理工具:swarm。使用Docker命令行接口可以完成创建集群、在集群中部署应用服务、管理集群行为等操作。

使用v1.12.0一下版本的用户请参见:Docker Swarm

功能亮点

  • 集群的管理与Docker引擎集成:使用Docker引擎命令行接口来创建部署应用服务的集群。不需要额外的第三方软件。

  • 分布式设计:在不同的节点类型中使用相同的部署方式。使用Docker Engine,可以同时在节点、管理节点及工作节点进行部署。整个集群可以通过单个镜像来建立。

  • 声明式的服务发布方式:Docker Engine在应用栈中使用声明的方式来定义服务中的不同状态。例如,可以通过描述一个应用由web前端、消息队列服务及后端数据库构成。

  • 弹性:为不同的服务声明不同任务数量。当数量上升或下降时,集群管理节点将自动添加或删除节点调整至预期的规模。

  • 维持规模:管理节点会持续监控集群的状态,使其实际状态与规划的状态一致。如果一个服务运行的10个容器中有两个发生了故障,管理节点将创建两个新的容器来取代故障的容器。管理节点会自动在计算节点注册并运行可用的新容器。

  • 多主机网络:为服务配置详细的网络覆盖。管理节点会自动在容器初始化时、应用更新时自动的注册容器的网络地址。

  • 服务发现:管理节点为集群中不同的服务声明唯一的DNS名并对运行中的容器进行负载均衡。通过此DNS名可以对集群中的任意容器进行查询。

  • 负载均衡:通过开放统一的端口来实现外部的负载均衡。在服务内部,集群允许指定节点间服务的分发方式。

  • 默认的安全配置:集群中的每个节点间强制使用TLS通信。还允许使用自签发根证书或自定义CA根证书。

  • 滚动更新:可以步进式对过时的服务进行更新。管理节点允许控制服务部署至不同节点的延迟时间。如果产生任何差池,可以回滚至上一版本。