简介
Docker Swarm 是一个强大的容器编排解决方案,使开发者能够将多个 Docker 主机转变为一个统一的、可扩展的基础设施。本全面教程深入介绍了创建、配置和管理 Docker Swarm 集群的方法,涵盖了基本概念、节点类型、服务部署策略以及构建强大的容器化环境的最佳实践。
Docker Swarm 基础
Docker Swarm 简介
Docker Swarm 是用于 Docker 环境的原生集群和容器编排解决方案。它使开发者能够创建和管理 Docker 节点集群,将多个 Docker 主机转变为单个虚拟 Docker 主机。
核心概念
Swarm 集群架构
graph TD
A[Swarm 管理器] --> B[工作节点 1]
A --> C[工作节点 2]
A --> D[工作节点 3]
Swarm 节点类型
| 节点类型 | 描述 | 职责 |
|---|---|---|
| 管理器节点 | 控制集群状态 | 编排、调度 |
| 工作节点 | 执行容器工作负载 | 运行服务 |
初始化 Swarm 集群
## 在主节点上初始化 Swarm
docker swarm init --advertise-addr 192.168.1.100
## 生成工作节点加入令牌
docker swarm join-token worker
## 将工作节点加入集群
docker swarm join --token < 令牌 > 192.168.1.100:2377
关键特性
- 去中心化设计
- 声明式服务模型
- 扩展和滚动更新
- 服务发现
- 负载均衡
- 安全通信
服务部署示例
## 创建一个复制的服务
docker service create --replicas 3 --name web nginx
## 扩展服务
docker service scale web=5
## 更新服务
docker service update --image nginx:latest web
集群配置
Swarm 集群拓扑结构
graph TD
A[管理器节点] --> B[工作节点 1]
A --> C[工作节点 2]
A --> D[工作节点 3]
节点初始化策略
管理器节点设置
## 在主管理器上初始化 Swarm 集群
docker swarm init --advertise-addr 192.168.1.100
## 查看集群加入令牌
docker swarm join-token manager
docker swarm join-token worker
工作节点配置
## 将工作节点加入集群
docker swarm join \
--token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxx \
192.168.1.100:2377
集群配置参数
| 参数 | 描述 | 默认值 |
|---|---|---|
| 通告地址 | 节点的网络接口 | 主 IP |
| 监听端口 | Swarm 通信端口 | 2377 |
| 节点标签 | 用于节点选择的元数据 | 无 |
高级集群配置
## 添加自定义节点标签
docker node update --label-add type=frontend worker1
## 设置节点可用性
docker node update --availability drain worker2
网络配置
## 创建覆盖网络
docker network create \
--driver overlay \
--subnet 10.0.0.0/24 \
my-network
服务管理
服务部署工作流程
graph LR
A[创建服务] --> B[部署容器]
B --> C[扩展服务]
C --> D[更新服务]
D --> E[监控性能]
基本服务创建
## 部署带有 3 个副本的 nginx 服务
docker service create \
--name web-service \
--replicas 3 \
--publish 80:80 \
nginx:latest
服务配置选项
| 选项 | 描述 | 示例 |
|---|---|---|
| --replicas | 容器实例数量 | 3 |
| --update-parallelism | 并发更新数 | 2 |
| --constraint | 节点放置规则 | node.labels.type==frontend |
服务扩展策略
## 动态扩展服务
docker service scale web-service=5
## 水平扩展
docker service update \
--replicas-max-per-node 2 \
web-service
负载均衡配置
## 使用自定义负载均衡创建服务
docker service create \
--name api-service \
--replicas 4 \
--publish mode=host,target=8080,published=80 \
--update-delay 10s \
api-image:latest
服务更新机制
## 滚动更新策略
docker service update \
--image nginx:latest \
--update-parallelism 2 \
--update-delay 10s \
web-service
服务监控
## 列出活动服务
docker service ls
## 检查特定服务
docker service ps web-service
总结
通过掌握 Docker Swarm,开发者和系统管理员能够在分布式系统中有效地管理容器化应用程序。本教程展示了初始化集群、配置节点拓扑、部署服务以及利用服务发现、负载均衡和安全通信等高级特性的关键技术。理解这些基础知识使团队能够构建具有更高运营效率的可扩展、弹性的容器基础设施。



