基于 CentOS 的 Docker Swarm 集群管理实战指南

基于 CentOS 的 Docker Swarm 集群管理实战指南

之前是基于ubuntu系统,此文以CentOS进行不同配置管理和实战说明,特别加上了FAQ常见问题。

一、环境准备

1.1 系统要求

操作系统CentOS 7/8(推荐 7.9 + 版本)

内核版本 :需高于 3.10(通过uname -r验证)

硬件配置:管理节点建议 2 核 4G,工作节点建议 1 核 2G

网络配置:所有节点需互通,关闭防火墙或放行以下端口:

复制代码
\# 开放Swarm通信端口

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

1.2 安装 Docker(国内源优化)

卸载旧版本

复制代码
sudo yum remove docker \\

docker-client \\

docker-client-latest \\

docker-common \\

docker-latest \\

docker-latest-logrotate \\

docker-selinux \\

docker-engine-selinux \\

docker-engine

配置国内源

复制代码
\# 阿里云Docker CE源

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo yum-config-manager --enable docker-ce-stable

安装 Docker CE

复制代码
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

sudo yum install -y docker-ce docker-ce-cli containerd.io

配置镜像加速器

复制代码
\# 创建配置文件

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

&#x20; "registry-mirrors": \["https://mirror.ccs.tencentyun.com", "https://docker.m.daocloud.io"]

}

EOF

启动服务

复制代码
sudo systemctl start docker

sudo systemctl enable docker

1.3 关闭 SELinux(可选)

复制代码
sudo setenforce 0

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

二、单管理节点集群配置

2.1 初始化 Swarm

复制代码
\# 选择管理节点执行

sudo docker swarm init --advertise-addr <管理节点IP>

2.2 添加工作节点

获取加入令牌

复制代码
sudo docker swarm join-token worker

\# 输出示例:

To add a worker to this swarm, run the following command:

docker swarm join --token SWMTKN-1-3nuu8r2s3z9eq2o3tl47wjgacpfuxpg64eqsc8wb5t8buijzbx-d2qw8h52loc0ithrvnosxxxxx 172.xx.xx.12:2377

在工作节点执行加入命令

复制代码
sudo docker swarm join \\

\--token \<WORKER\_TOKEN> \\

<管理节点IP>:2377

2.3 验证集群状态

复制代码
sudo docker node ls

三、三管理节点高可用集群配置

3.1 初始化主管理节点

复制代码
\# 在第一个管理节点执行

sudo docker swarm init --advertise-addr \<Manager1-IP>

3.2 添加其他管理节点

获取管理节点令牌

复制代码
sudo docker swarm join-token manager

\# 输出示例:

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

在 Manager2 和 Manager3 执行加入命令

复制代码
sudo docker swarm join \\

\--token \<MANAGER\_TOKEN> \\

\<Manager1-IP>:2377

3.3 验证集群状态

复制代码
sudo docker node ls

四、集群管理实战

4.1 服务部署

复制代码
\# 创建Nginx服务(3副本)

sudo docker service create \\

\--name nginx \\

\--replicas 3 \\

-p 80:80 \\

nginx

4.2 滚动更新

复制代码
\# 更新镜像版本

sudo docker service update \\

\--image nginx:1.23.3 \\

nginx

\# 回滚更新

sudo docker service update \\

\--rollback nginx

4.3 节点管理

复制代码
\# 查看节点状态

sudo docker node ls

\# 移除节点

sudo docker node rm <节点ID>

\# 晋升为管理节点

sudo docker node promote <节点ID>

五、常见问题与解决方案(FAQ)

5.1 Docker 安装问题

Q1:yum 安装 Docker 时提示依赖错误 A:执行sudo yum update -y更新系统包后重试。

Q2:镜像拉取速度慢A:配置国内镜像加速器(参考 1.2 节),或使用阿里云 / 腾讯云专有加速器。

5.2 Swarm 集群问题

Q1:节点无法加入集群A:

检查防火墙规则(参考 1.1 节)

确认节点间网络连通性(ping/telnet

重新获取加入令牌(docker swarm join-token

Q2:管理节点配置错误导致集群不可用A:

使用docker swarm leave --force强制退出问题节点

主节点执行docker swarm init --force-new-cluster重建集群

重新加入其他节点

Q3:Raft 协议脑裂问题A:确保管理节点数量为奇数(1/3/5),避免同时离线超过半数节点。

5.3 服务部署问题

Q1:服务启动失败 A:检查镜像是否存在(docker image ls),或通过docker service logs <服务名>查看日志。

Q2:滚动更新失败A:

检查更新策略(--update-parallelism/--update-delay

手动回滚至稳定版本

排查应用程序错误

六、性能优化建议

资源限制

复制代码
sudo docker service create \\

\--name nginx \\

\--limit-cpu 2 \\

\--memory 1g \\

nginx

存储优化

复制代码
sudo docker service create \\

\--name mysql \\

\--mount type=volume,source=mysql-data,destination=/var/lib/mysql \\

mysql

网络优化

复制代码
sudo docker network create \\

-d overlay \\

\--subnet 10.0.0.0/24 \\

my-overlay-network

七、生产环境最佳实践

节点监控

复制代码
\# 安装Portainer可视化工具

sudo docker service create \\

\--name portainer \\

\--publish 9000:9000 \\

\--mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock \\

portainer/portainer-ce

数据备份

复制代码
\# 备份Raft日志

sudo tar czvf raft-data.tar.gz /var/lib/docker/volumes/

安全加固

复制代码
\# 启用TLS认证

sudo docker swarm init --tlsverify \\

\--tlscacert ca.pem \\

\--tlscert server.pem \\

\--tlskey server-key.pem \\

\--advertise-addr \<IP>

八、总结

本文通过实战案例详细介绍了基于 CentOS 的 Docker Swarm 集群搭建与管理,涵盖单节点和三节点高可用配置、服务部署、滚动更新及故障处理等核心操作。通过国内源优化和防火墙配置,显著提升了镜像拉取速度和集群通信效率。在生产环境中,建议结合监控工具和数据备份策略,确保容器化应用的稳定运行。

相关推荐
漫谈网络15 分钟前
Ollama工具调用(Tool Calls)业务应用案例
linux·ai·aigc·工具调用·ollama·tool calls
unique_落尘16 分钟前
java操作打印机直接打印及详细linux部署(只适用于机器和打印机处于同一个网段中)
java·linux·打印机
李菠菜1 小时前
Kubernetes上通过Helm部署高可用Redis集群
docker·容器·kubernetes
李菠菜1 小时前
修改KubeSphere外网访问端口
docker·容器·kubernetes
前进的程序员2 小时前
在Linux驱动开发中使用DeepSeek的方法
linux·运维·服务器·人工智能
福大大架构师每日一题2 小时前
docker v28.1.1 正式发布!修复关键Bug,网络与安全性再升级
网络·docker·bug
彭友圈1012 小时前
CE第二次作业
linux·服务器·网络
银河麒麟操作系统2 小时前
【银河麒麟高级服务器操作系统】磁盘只读问题分析
java·linux·运维·服务器·jvm
孙克旭_2 小时前
day002
linux
苏生要努力2 小时前
VulnHub-DC-2靶机渗透教程
linux·安全