第4课 Docker Swarm–终极军团魔法

第4课 Docker Swarm--终极军团魔法

如果说docker-compose是管理一个小队,那Swarm就是指挥整个魔法王国军团!🏰✨

🧙♂️ 第一章:什么是Docker Swarm?

想象一下:你不仅是魔法小队的队长,而是成为了魔法王国的大元帅

Docker Swarm就是:

  • 🐋 多个Docker主机组成的魔法集群

  • 👑 内置的原生集群管理功能

  • 🌐 让多个机器像一台机器一样工作

简单说:把很多台电脑变成一台超级电脑的魔法!


📊 第二章:Swarm vs Compose 异同

特性 Docker Compose Docker Swarm
规模 单机小队 多机军团
用途 开发测试 生产部署
高可用 ❌ 无 ✅ 有
负载均衡 ❌ 无 ✅ 自动
魔法级别 见习魔法师 大魔导师

Compose:”我在一台机器上启动所有服务”
Swarm:”我在一个集群上部署服务,自动分配到哪里运行”


⚙️ 第三章:Swarm工作原理

集群角色:

  • Manager节点:🐼 熊猫元帅(指挥中心)

    – Manager节点:管理节点。负责集群的管理和控制,Swarm集群允许多个Manager节点,多个Manager节点中仅允许唯一一个Leader。

     

  • Worker节点:🐯 老虎士兵(干活节点)

    – Worker节点:工作节点。负责接收来自Manager节点的任务分配,并执行相应的容器操作

     

工作流程:

  1. 你告诉Manager:”我要10个web服务实例”

  2. Manager调度到各个Worker节点上运行

  3. 内置负载均衡自动分配流量

  4. 如果某个节点宕机,自动在其他节点重启服务

 
bash

# 初始化Swarm(成为Manager)
docker swarm init --advertise-addr <经理IP>

# 工人节点加入
docker swarm join --token <魔法令牌> <经理IP>:2377

🎯 第四章:Swarm集群管理

创建集群:

# 在第一台机器上(成为Manager)
docker swarm init --advertise-addr 192.168.1.100

# 输出加入命令,让其他机器执行
docker swarm join-token worker	# 管理节点查看工作token
docker swarm join-token manager	# 管理节点查看管理token
 
加入节点
加入Manager2节点。Manager2上执行如下命令:
docker swarm join –advertise-addr=Manager2的广播地址 \
–token 管理token \
Manager1广播地址:2377
加入Worker1、Worker2节点。在对应的节点上执行如下命令:
docker swarm join –advertise-addr=Worker的广播地址 \
–token 工作token \
Manager1广播地址:2377

查看集群状态:

docker node ls  # 查看所有节点

# 输出示例:
ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
panda1 *      manager1    Ready   Active        Leader
tiger1        worker1     Ready   Active        
tiger2        worker2     Ready   Active

🐯 第五章:节点管理

提升节点身份:

# 把worker提升为manager(增加管理节点)
docker node promote tiger1

# 降级为worker
docker node demote tiger1

节点维护:

# 排空节点(不再分配新任务)
docker node update --availability drain tiger1     # 节点暂停接受任务

# 重新激活节点
docker node update --availability active tiger1
 
 

🚀 第六章:服务管理

创建服务:

# 部署web服务(10个副本)
docker service create --name 网页魔法屋 \
  --replicas 10 \
  --publish published=80,target=3000 \
  my-web-app:latest

# 查看服务
docker service ls
docker service ps 网页魔法屋
6.1 服务定义
docker service create –name 服务名 \
[-d] [-p] [-e] [–network] [–replicas] [–mount]\
image:tag
说明:-d 代表后台运行 -p 代表端口映射 -e 代表环境变量
–network 代表使用的网络 –replicas 代表副本数量 –mount 代表文件系统挂载
image:tag 代表基础镜像和tag
实验1:-d、-p、–replicas、–mount

服务扩缩容:

# 扩容到15个实例
docker service scale 网页魔法屋=15

# 或者用update命令
docker service update --replicas 20 网页魔法屋

📈 第七章:弹性伸缩

手动伸缩:

# 根据CPU使用率自动伸缩(需要资源限制)
docker service update \
  --limit-cpu 0.5 \
  --replicas-max 10 \
  --replicas-min 2 \
  网页魔法屋

监控伸缩:

bash
 
# 结合监控工具自动伸缩
# 当CPU > 70%时自动增加实例
# 当CPU < 30%时自动减少实例

🔄 第八章:滚动更新

零停机更新:

 
# 更新服务镜像(滚动更新)
docker service update \
  --image my-web-app:v2.0 \
  --update-parallelism 2 \      # 每次更新2个实例
  --update-delay 10s \          # 每次间隔10秒
  --update-failure-action pause \ # 失败时暂停
  网页魔法屋

回滚更新:

bash
 
# 如果新版本有问题,快速回滚
docker service update --rollback 网页魔法屋

🎩 第九章:Swarm中使用Docker Compose

使用stack部署(推荐):

# docker-compose.yml

version: '3.8'
services:
  网页魔法屋:
    image: my-web-app:latest
    deploy:
      replicas: 6
      update_config:
        parallelism: 2
        delay: 10s
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
    ports:
      - target: 3000
        published: 80
        protocol: tcp
        mode: ingress

部署stack:

 
# 部署整个应用栈
docker stack deploy -c docker-compose.yml 魔法王国

# 查看stack
docker stack ls
docker stack services 魔法王国

🌟 终极魔法演示:

 
# 1. 初始化Swarm
docker swarm init

# 2. 部署整个魔法军团
docker stack deploy -c docker-compose.yml 魔法军团

# 3. 查看部署状态
docker service ls

# 4. 扩容web服务
docker service scale 魔法军团_网页魔法屋=10

# 5. 滚动更新到新版本
docker service update --image my-web-app:v2.0 魔法军团_网页魔法屋

💡 Swarm魔法心得:

  1. 简单强大:内置集群功能,无需额外工具

  2. 高可用:Manager节点可多个,自动选举Leader

  3. 服务发现:自动DNS解析,服务间直接用服务名访问

  4. 安全:TLS加密通信,安全令牌管理

(魔法杖挥出绚烂光芒)现在你已经是Swarm大元帅了!可以去管理真正的生产环境集群了!

记住:Swarm让分布式系统变得像操作单机一样简单! 去构建你的魔法帝国吧!🐋✨

给TA打赏
共{{data.count}}人
人已打赏
Docker

第3课 如何用docker-compose编排Docker整个魔法军团

2025-8-24 19:16:11

Docker

第5课 本地镜像发布到私有库

2025-8-28 11:43:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索