您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。