您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Swarm如何搭建Docker集群
## 前言
Docker Swarm是Docker官方提供的容器编排工具,它允许用户将多个Docker主机组成一个虚拟的集群,实现容器的分布式部署和管理。与Kubernetes相比,Swarm更加轻量级且易于上手,适合中小规模的生产环境。本文将详细介绍如何从零开始搭建一个Docker Swarm集群。
---
## 一、环境准备
### 1.1 服务器要求
- 至少2台Linux服务器(推荐Ubuntu 20.04/CentOS 7+)
- 所有节点需安装Docker Engine(版本18.06+)
- 节点间网络互通(关闭防火墙或开放端口:2377/tcp, 7946/tcp+udp, 4789/udp)
- 主机名解析(建议配置`/etc/hosts`或DNS)
### 1.2 安装Docker
在所有节点执行以下命令:
```bash
# Ubuntu
sudo apt-get update && sudo apt-get install -y docker.io
# CentOS
sudo yum install -y docker
sudo systemctl start docker && sudo systemctl enable docker
选择一台服务器作为管理节点(Manager):
docker swarm init --advertise-addr <MANAGER_IP>
成功后会输出类似提示:
Swarm initialized: current node (xyz) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-xxx <MANAGER_IP>:2377
在其他服务器上执行上述输出的docker swarm join
命令:
docker swarm join --token <TOKEN> <MANAGER_IP>:2377
在管理节点执行:
docker node ls
应看到所有节点状态为Ready
,Manager节点显示Leader
。
Swarm使用overlay网络实现跨主机容器通信:
docker network create -d overlay my_network
docker network ls | grep overlay
部署一个Nginx服务(3个副本):
docker service create \
--name web \
--replicas 3 \
--publish published=8080,target=80 \
--network my_network \
nginx:latest
命令 | 功能 |
---|---|
docker service ls |
查看服务列表 |
docker service ps <SERVICE> |
查看服务详情 |
docker service scale <SERVICE>=5 |
扩容副本数 |
docker service update --image nginx:alpine web |
滚动更新 |
为防止单点故障,建议部署3个Manager节点:
# 在第二个Manager节点执行
docker swarm join-token manager
# 使用输出的命令加入其他节点
docker node ls -q | xargs docker node inspect -f '{{.ManagerStatus.Reachability}}'
docker service create \
--name mysql \
--mount type=volume,source=db_data,target=/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secret \
mysql:5.7
推荐NFS或云存储(AWS EBS/Azure Disk等)。
docker swarm update --monitor=true
使用ELK或Fluentd收集日志:
docker service create --name logspout \
--mode global \
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
gliderlabs/logspout syslog+tls://logs.example.com:514
docker swarm init --tlsverify
docker swarm join-token --rotate
节点无法加入集群
服务无法跨节点通信
docker network inspect my_network
管理器节点宕机
通过以上步骤,我们完成了Docker Swarm集群的搭建和基础配置。Swarm的简洁性使其成为快速部署容器化应用的理想选择。对于更复杂的场景,可以结合CI/CD流水线实现自动化部署。下一步建议探索: - 与Traefik集成实现服务发现 - 使用Portainer进行可视化管控 - 结合Prometheus监控集群性能
注意:生产环境建议阅读官方文档获取最新安全实践。 “`
(全文约1300字)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。