CentOS 上 Docker Swarm 集群搭建步骤
一 架构与端口规划
二 环境准备与 Docker 安装
hostnamectl set-hostname node1
echo "192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3" >> /etc/hosts
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl start docker && systemctl enable docker
{
"registry-mirrors": ["https://docker.m.daocloud.io","https://hub-mirror.c.163.com"]
}
systemctl restart docker
firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --zone=public --add-port=7946/tcp --permanent
firewall-cmd --zone=public --add-port=7946/udp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent
firewall-cmd --reload
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
三 初始化 Swarm 并加入节点
docker swarm init --advertise-addr <MANAGER-IP>:2377 --listen-addr <MANAGER-IP>:2377
记录输出的加入命令(包含 Worker 与 Manager 的 Token)。如需查看或再次生成加入命令:docker swarm join-token worker
docker swarm join-token manager
docker swarm join --token <WORKER-TOKEN> <MANAGER-IP>:2377
docker node ls
输出中 MANAGER STATUS 为 Leader/Reachable 表示控制面正常。四 高可用与常用运维
docker node promote <NODE-NAME>
docker node ls
docker node update --availability drain <NODE-NAME>
# 维护完成后恢复
docker node update --availability active <NODE-NAME>
docker network create --driver overlay --attachable my-overlay
docker service create --name nginx \
--replicas 3 \
--publish published=8080,target=80 \
--network my-overlay \
nginx:latest
docker service ls
docker service ps nginx
# 在待移除节点执行
docker swarm leave --force
# 在 Manager 执行
docker node rm <NODE-ID>
# 轮换 Swarm CA 证书
docker swarm ca --rotate
# 备份 Raft 数据(在 Manager 执行)
tar czvf swarm-backup-$(date +%F).tar.gz /var/lib/docker/swarm/
五 常见问题与排查