如何配置和管理 Docker Swarm 集群

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

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,开发者和系统管理员能够在分布式系统中有效地管理容器化应用程序。本教程展示了初始化集群、配置节点拓扑、部署服务以及利用服务发现、负载均衡和安全通信等高级特性的关键技术。理解这些基础知识使团队能够构建具有更高运营效率的可扩展、弹性的容器基础设施。