[特殊字符] Docker Swarm 集群搭建指南

🐳 Docker Swarm 集群搭建指南

本指南演示如何初始化一个 Swarm 集群,并将工作节点(Worker)加入该集群。

1. 初始化集群 (Manager 节点)

在作为 管理节点 (Manager) 的服务器上执行初始化命令。

执行命令

bash 复制代码
docker swarm init --advertise-addr <IP地址>
  • <IP地址> :请替换为当前服务器的 公网 IP 或 内网 IP 。其他节点将通过此 IP 加入集群。
    • 示例: 101.42.255.221

命令输出示例

执行成功后,终端将输出类似以下信息:

text 复制代码
Swarm initialized: current node (zjyxjgdb4dj7z2cvxa8tnvbfi) is now a manager.

To add a worker to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-1mf5gyircz6fkezjxtjqz3gsnai9sf5qkj7qufpojnmiob46nm-8hranz41dbfghm28owch647b4 101.42.255.221:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

⚠️ 重要提示 :请复制输出中 To add a worker to this swarm... 下方的完整 docker swarm join ... 命令,后续步骤需要使用它。


2. 加入工作节点 (Worker 节点)

登录到需要加入集群的 工作节点 (Worker) 服务器,执行上一步获取的命令。

执行命令

bash 复制代码
docker swarm join --token <TOKEN> <MANAGER_IP>:2377
  • <TOKEN> :替换为初始化时生成的 Token(如 SWMTKN-1-...)。
  • <MANAGER_IP>:替换为 Manager 节点的 IP 地址。

示例:

bash 复制代码
docker swarm join --token SWMTKN-1-1mf5gyircz6fkezjxtjqz3gsnai9sf5qkj7qufpojnmiob46nm-8hranz41dbfghm28owch647b4 101.42.255.221:2377

执行成功后,通常提示:This node joined a swarm as a worker.


3. 验证集群状态

回到 Manager 节点,执行以下命令查看集群节点列表。

检查命令

bash 复制代码
docker node ls

成功输出示例

如果所有节点状态均为 Ready,且 AVAILABILITY 为 Active,则表示集群搭建成功。

text 复制代码
ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
asnk7ncmxfk6l41qi7dvkqxq0     skywidecomputer     Ready     Active                          28.3.2
zjyxjgdb4dj7z2cvxa8tnvbfi *   skywidecontroller   Ready     Active         Leader           28.3.2

字段说明:

  • *:标记当前所在的节点(即执行命令的 Manager 节点)。
  • MANAGER STATUS :
    • Leader:当前主管理节点。
    • (空):表示该节点为工作节点 (Worker)。
  • STATUS :Ready 表示节点正常连接并可用。

🔧 附录:常用管理命令

  • 查看加入令牌(如果之前的命令丢失):

    bash 复制代码
    # 获取 Worker 加入令牌
    docker swarm join-token worker
    
    # 获取 Manager 加入令牌
    docker swarm join-token manager
  • 移除节点:

    bash 复制代码
    # 先在节点自身执行离开命令
    docker swarm leave
    
    # 如果在 Manager 上强制移除未响应的节点
    docker node rm <NODE_ID>
相关推荐
小羊没烦恼!5 分钟前
关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁
java·服务器·网络·学习·负载均衡
Fuyo_11191 小时前
C++ AVL树保姆级详解:从平衡因子到四大旋转机制
java·c++·算法
Sarvartha2 小时前
Date、LocalDate、LocalTime、LocalDateTime、DateTimeFormatter类
java
阿俊-全栈开发2 小时前
LikeShop 多商户 Java 版商城微服务模块拆分与部署架构演进实践
java·微服务·架构·likeshop开源商城·多商户源码
Wang's Blog2 小时前
Java 项目实战:交友项目 - 联系人列表
java·开发语言·交友
我命由我123452 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
螺蛳粉 螺蛳粉2 小时前
第 02 篇:镜像分层与 containerd 2.x 实战:SystemdCgroup 与 pause 镜像配置踩坑(底座认知 02)
docker·云原生·容器·kubernetes·etcd·containerd·kube-apiserver
wefg13 小时前
【Docker】镜像相关指令
运维·docker·容器
香蕉大香蕉(06敬畏市场)3 小时前
MySQL 单点详解(01)
java·数据库·mysql·面试·博客·实习
LaughingZhu3 小时前
Product Hunt 热榜 2026-10-30:Empacer、Scape、Floot in ChatGPT
java·前端·数据库·人工智能·chatgpt·notion