1. Docker Swarm集群初始化完全指南
在容器化技术普及的今天,单机Docker已经不能满足生产环境的需求。Docker Swarm作为Docker原生的集群管理工具,以其轻量级和易用性成为中小规模容器编排的首选方案。我最近在客户现场部署了一套生产级Swarm集群,这里将完整记录从零开始的初始化过程。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境准备
2.1 硬件资源配置建议
对于生产环境,建议至少准备3台物理机或云主机:
- 管理节点:2核CPU/4GB内存/50GB存储
- 工作节点:4核CPU/8GB内存/100GB存储
- 所有节点需要:
- 固定IP地址
- 时钟同步(NTP服务)
- 互相能通过主机名解析
重要提示:所有节点必须安装相同版本的Docker引擎,版本差异会导致兼容性问题。
2.2 系统初始化配置
bash复制# 所有节点执行
sudo apt update && sudo apt upgrade -y
sudo timedatectl set-timezone Asia/Shanghai
sudo apt install -y ntp
sudo systemctl enable --now ntp
3. Swarm集群初始化详解
3.1 管理节点初始化
在选定的管理节点执行:
bash复制docker swarm init --advertise-addr <MANAGER_IP>
成功后会输出加入集群的token命令,类似:
bash复制docker swarm join --token SWMTKN-1-xxx <MANAGER_IP>:2377
3.2 工作节点加入
在每个工作节点执行上一步获得的join命令。验证节点状态:
bash复制docker node ls
正常应该看到所有节点状态为Ready。
4. 集群网络配置
4.1 创建overlay网络
bash复制docker network create -d overlay --subnet 10.0.0.0/24 my-overlay
4.2 网络优化参数
bash复制docker network create -d overlay \
--opt encrypted \
--opt com.docker.network.driver.mtu=1400 \
prod-overlay
5. 服务部署实战
5.1 部署Nginx服务
bash复制docker service create \
--name web \
--publish 80:80 \
--replicas 3 \
--network my-overlay \
nginx:alpine
5.2 服务伸缩
bash复制docker service scale web=5
6. 集群运维要点
6.1 节点维护模式
下线节点前先设置drain模式:
bash复制docker node update --availability drain <NODE_ID>
6.2 集群备份恢复
备份Swarm配置:
bash复制docker swarm ca --rotate
tar -czvf swarm-backup.tar.gz /var/lib/docker/swarm
7. 常见问题排查
7.1 节点无法加入集群
检查:
- 防火墙是否开放2377端口
- 节点间网络连通性
- Token是否过期(有效期24小时)
7.2 服务无法访问
检查:
bash复制docker service inspect --pretty <SERVICE_NAME>
docker service logs <SERVICE_NAME>
8. 生产环境建议
- 至少部署3个管理节点保证高可用
- 为不同环境(dev/test/prod)创建独立的Swarm集群
- 定期执行
docker system prune清理无用资源
经过这次实战部署,我认为Docker Swarm特别适合中小型企业的容器化需求。相比K8s更轻量,学习曲线平缓,但又能满足基本的服务编排需求。最关键的是它与Docker生态无缝集成,运维人员可以快速上手。
