# Docker Swarm集群搭建的步驟
## 前言
Docker Swarm是Docker官方提供的容器編排工具,它允許用戶將多個Docker主機組成一個集群,統一管理容器服務。相比于Kubernetes,Swarm具有更輕量、易上手的特點,適合中小規模的應用場景。本文將詳細介紹如何從零開始搭建一個Docker Swarm集群。
---
## 一、環境準備
### 1.1 硬件要求
- 至少2臺Linux主機(物理機或虛擬機)
- 推薦配置:2核CPU/4GB內存/20GB存儲
- 操作系統:Ubuntu 20.04 LTS/CentOS 7+
- 網絡要求:
- 所有節點在同一局域網
- 開放端口:2377/tcp(管理端口)、7946/tcp+udp(節點通信)、4789/udp(覆蓋網絡)
### 1.2 軟件要求
- Docker Engine 20.10+
- 所有節點時間同步(建議安裝NTP服務)
- 主機名解析(可通過`/etc/hosts`或DNS配置)
---
## 二、基礎環境配置
### 2.1 安裝Docker引擎
在所有節點執行以下命令:
```bash
# Ubuntu示例
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 驗證安裝
sudo docker --version
修改/etc/docker/daemon.json
(如不存在則創建):
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
重啟Docker服務:
sudo systemctl restart docker
選擇一臺作為管理節點(Manager)執行:
sudo 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-token manager
查看工作節點令牌:
docker swarm join-token worker
在其他節點上執行join命令:
sudo docker swarm join --token <TOKEN> <MANAGER_IP>:2377
在管理節點執行:
docker node ls
示例輸出:
ID HOSTNAME STATUS AVLABILITY MANAGER STATUS
abc123 manager1 Ready Active Leader
def456 worker1 Ready Active
提升工作節點為管理節點:
docker node promote <NODE-ID>
降級管理節點:
docker node demote <NODE-ID>
docker network create --driver overlay --subnet 10.0.9.0/24 my-overlay
docker network ls
docker service create \
--name nginx \
--replicas 3 \
--publish published=8080,target=80 \
--network my-overlay \
nginx:latest
命令 | 說明 |
---|---|
docker service ls |
查看服務列表 |
docker service ps <SERVICE> |
查看服務詳情 |
docker service scale <SERVICE>=5 |
擴展副本數 |
docker service update --image nginx:alpine <SERVICE> |
滾動更新 |
創建全局volume:
docker volume create app-data
掛載volume:
docker service create \
--mount type=volume,source=app-data,target=/app \
--name redis \
redis:alpine
docker service create \
--mount 'type=volume,src=nfsvol,dst=/app,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/path/on/nfs,"volume-opt=o=addr=<NFS_SERVER>,vers=4,soft,timeo=180,bg,tcp,rw"' \
--name nfs-app \
nginx
生成CA證書:
openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
修改daemon.json
:
{
"tls": true,
"tlscacert": "/path/to/ca.pem",
"tlscert": "/path/to/server-cert.pem",
"tlskey": "/path/to/server-key.pem"
}
/var/log/syslog
日志docker network inspect <NETWORK>
docker service create \
--mode global \
--name cadvisor \
--mount type=bind,source=/,target=/rootfs,readonly=true \
--mount type=bind,source=/var/run,target=/var/run \
--mount type=bind,source=/sys,target=/sys,readonly=true \
--mount type=bind,source=/var/lib/docker/,target=/var/lib/docker,readonly=true \
google/cadvisor:latest
示例配置:
scrape_configs:
- job_name: 'docker-swarm'
static_configs:
- targets: ['manager1:8080', 'worker1:8080']
通過以上步驟,我們完成了Docker Swarm集群的搭建和基礎配置。Swarm的簡單易用特性使其成為容器編排的良好入門選擇。對于生產環境,建議結合CI/CD管道和監控系統構建完整的容器化平臺。后續可以進一步探索: - 服務滾動更新策略 - 配置管理(docker config) - 密鑰管理(docker secret) - 與Traefik等工具集成
注意:本文所有命令需根據實際環境修改IP地址、主機名等參數。建議在測試環境驗證后再部署到生產環境。 “`
(全文約2300字,實際字數可能因Markdown渲染略有差異)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。