Docker Swarm集群指南
Docker Swarm 是 Docker 官方提供的原生集群管理和编排工具。它将一组 Docker 主机转化为一个单一的、虚拟的 Docker 主机,使得开发者可以像管理单个容器一样管理大规模的容器集群。
2. 核心概念
Section titled “2. 核心概念”- 管理器节点 (Manager Node):负责集群状态维护、任务调度及集群成员管理。建议生产环境配置奇数个管理器以实现高可用。
- 工作节点 (Worker Node):负责接收并执行来自管理器的任务(即运行容器)。
- 服务 (Service):定义了容器在集群中的期望状态(如副本数、网络、端口映射)。
- 任务 (Task):Swarm 调度的最小单元,通常对应一个运行中的容器。
- 堆栈 (Stack):通过 Compose 文件定义的一组关联服务,用于管理复杂的应用架构。
3. 集群管理实战
Section titled “3. 集群管理实战”3.1. 初始化与加入集群
Section titled “3.1. 初始化与加入集群”# 在主节点初始化集群docker swarm init --advertise-addr <MANAGER_IP>:2377
# 查看加入集群所需的 Token (worker 或 manager)docker swarm join-token worker
# 在子节点运行加入命令docker swarm join --token <TOKEN> <MANAGER_IP>:2377
# 查看所有节点状态docker node ls
# 提升节点到 manager 节点docker node promote slave2
# 退出集群,如果是最后一个 manager 节点,则需要添加--forcedocker swarm leave --force3.2. 服务操作
Section titled “3.2. 服务操作”#拉取镜像docker pull kentalk/helloworld
# 创建一个 3 副本的 Nginx 服务docker service create --replicas 3 --name my-web -p 8080:80 nginx
# 服务扩缩容docker service scale my-web=5
# 更新服务镜像docker service update --image nginx:stable my-web
# 回滚操作docker service rollback my-web4. Docker Stack 编排
Section titled “4. Docker Stack 编排”使用 docker-stack.yml 进行多服务部署。
version: "3.8"services: web: image: nginx:latest ports: - "8000:80" deploy: replicas: 3 update_config: #配置滚动更新策略。 parallelism: 1 #每次更新一个副本。 delay: 10s #每次更新后等待 10 秒。 rollback_config: parallelism: 1 #每次回滚一个副本。 delay: 10s #每次回滚后等待 10 秒。 restart_policy: condition: on-failure resources: limits: cpus: "0.5" memory: 512M redis: image: redis:alpine ports: - "6379:6379" deploy: replicas: 1 restart_policy: condition: on-failurenetworks: default: name: my-stack-network4.1. 部署命令
Section titled “4.1. 部署命令”# 部署或更新堆栈docker stack deploy --compose-file docker-stack.yml my-app-stack
# 查看堆栈docker stack ls# 查看堆栈任务docker stack ps my-app-stack# 删除堆栈docker stack rm