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