# 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。