集群模式
注意
Swarm模式是用于管理Docker守护程序集群的高级功能。
如果你打算将Swarm用作生产运行时环境,请使用Swarm模式。
如果你不打算使用Swarm进行部署,请改用Docker Compose。如果你正在为Kubernetes部署进行开发,请考虑在Docker Desktop中使用集成的Kubernetes功能。
当前版本的Docker包含Swarm模式,用于本地管理称为swarm的Docker Engine集群。使用Docker CLI创建swarm,将应用程序服务部署到swarm,并管理swarm行为。
Docker Swarm模式内置于Docker Engine中。不要将Docker Swarm模式与Docker Classic Swarm混淆,后者不再积极开发。
功能亮点
与Docker Engine集成的集群管理
使用Docker Engine CLI创建Docker Engine群集,你可以在其中部署应用程序服务。无需额外的编排软件即可创建或管理群集。
去中心化设计
Docker Engine在运行时处理任何专用化,而不是在部署时处理节点角色之间的差异。你可以使用Docker Engine部署两种节点(管理器和工作节点)。这意味着你可以从单个磁盘镜像构建整个群集。
声明式服务模型
Docker Engine使用声明式方法,让你定义应用程序堆栈中各种服务的期望状态。例如,你可以描述一个应用程序,该应用程序由具有消息队列服务和数据库后端的Web前端服务组成。
扩展
对于每个服务,你可以声明要运行的任务数量。当你向上或向下扩展时,群集管理器会自动通过添加或删除任务来适应,以维持期望状态。
期望状态协调
群集管理器节点不断监视群集状态,并协调实际状态与你表达的期望状态之间的任何差异。例如,如果你设置了一个服务来运行容器的10个副本,并且托管其中两个副本的工作节点机器崩溃,管理器将创建两个新副本以替换崩溃的副本。群集管理器将新副本分配给正在运行且可用的工作节点。
多主机网络
你可以为你的服务指定一个覆盖网络。群集管理器在初始化或更新应用程序时会自动为覆盖网络上的容器分配地址。
服务发现
群集管理器节点为群集中的每个服务分配唯一的DNS名称并负载均衡正在运行的容器。你可以通过嵌入在群集中的DNS服务器查询群集中的每个正在运行的容器。
负载均衡
你可以将服务的端口公开给外部负载均衡器。在内部,群集允许你指定如何在节点之间分配服务容器。
默认安全
群集中的每个节点都强制执行TLS相互身份验证和加密,以保护自身与所有其他节点之间的通信安全。你可以选择使用自签名根证书或来自自定义根CA的证书。
滚动更新
在推出时,你可以逐步将服务更新应用于节点。群集管理器允许你控制在不同节点集之间服务部署的延迟。如果出现任何问题,你可以回滚到服务的先前版本。