您好,登录后才能下订单哦!
# Docker Swarm集群怎么创建
## 前言
Docker Swarm是Docker官方提供的容器编排工具,它允许用户将多个Docker主机组成一个集群,统一管理容器服务。相比于Kubernetes,Swarm以轻量级和易用性著称,适合中小规模的生产环境部署。本文将详细介绍从零开始搭建Docker Swarm集群的全过程。
---
## 一、环境准备
### 1.1 服务器规划
建议准备至少3台Linux服务器(物理机或虚拟机),配置要求:
- 操作系统:Ubuntu 20.04+/CentOS 7+
- 硬件:2核CPU/4GB内存/50GB磁盘
- 网络:服务器间需互通(建议内网千兆)
- 主机名解析:建议配置`/etc/hosts`或DNS
示例环境:
- 管理节点(Manager):192.168.1.10
- 工作节点(Worker):192.168.1.11
- 工作节点(Worker):192.168.1.12
### 1.2 基础环境配置
在所有节点执行:
```bash
# 关闭防火墙(生产环境建议配置规则)
systemctl stop firewalld && systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 配置时间同步
yum install -y ntpdate || apt-get install -y ntpdate
ntpdate ntp.aliyun.com
在所有节点安装相同版本的Docker(以20.10.12为例):
# 卸载旧版本
yum remove -y docker* || apt-get remove -y docker*
# 安装依赖
yum install -y yum-utils || apt-get install -y apt-transport-https ca-certificates
# 添加Docker源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo || \
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
# 安装Docker
yum install -y docker-ce-20.10.12 docker-ce-cli-20.10.12 containerd.io || \
apt-get update && apt-get install -y docker-ce=20.10.12~3-0~ubuntu-focal docker-ce-cli=20.10.12~3-0~ubuntu-focal containerd.io
# 配置镜像加速
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# 启动服务
systemctl enable docker && systemctl start docker
验证安装:
docker version | grep -i version
在192.168.1.10上执行:
docker swarm init --advertise-addr 192.168.1.10
成功后会输出加入集群的命令:
Swarm initialized: current node (k1xy3...) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-2zl94... 192.168.1.10:2377
docker node ls
输出示例:
ID HOSTNAME STATUS AVLABILITY MANAGER STATUS
k1xy3... manager1 Ready Active Leader
在两个Worker节点上分别执行前面生成的加入命令:
docker swarm join --token SWMTKN-1-2zl94... 192.168.1.10:2377
成功后显示:
This node joined a swarm as a worker.
在Manager节点查看集群:
docker node ls
完整输出示例:
ID HOSTNAME STATUS AVLABILITY MANAGER STATUS
k1xy3... manager1 Ready Active Leader
m5bq2... worker1 Ready Active
n9zp8... worker2 Ready Active
将Worker提升为Manager:
docker node promote worker1
将Manager降级为Worker:
docker node demote manager2
临时下线节点:
docker node update --availability drain worker1
恢复节点:
docker node update --availability active worker1
创建overlay网络:
docker network create -d overlay mynet
查看网络:
docker network ls | grep overlay
部署Nginx服务:
docker service create \
--name web \
--replicas 3 \
--publish published=8080,target=80 \
--network mynet \
nginx:alpine
查看服务列表:
docker service ls
查看服务详情:
docker service ps web
扩展服务实例:
docker service scale web=5
更新服务镜像:
docker service update --image nginx:latest web
关闭worker1节点后观察:
watch docker service ps web
Swarm会自动在可用节点重新启动容器,保持replicas数量。
加密通信:启用TLS认证
docker swarm init --advertise-addr 192.168.1.10 --cert-expiry 720h
密钥管理:使用Docker secrets存储敏感信息
echo "db_password" | docker secret create mysql_pass -
网络隔离:限制服务间通信
docker service create --network mynet --name db --secret mysql_pass mysql
检查: - 2377端口是否开放 - 节点时间是否同步 - 防火墙规则
检查:
docker inspect --format '{{.Status.State}}' <task_id>
docker logs <container_id>
检查:
docker network inspect mynet
ping <container_ip>
/var/lib/docker/swarm
目录通过本文的详细步骤,您已经成功搭建了一个具备生产可用性的Docker Swarm集群。Swarm的简洁架构使得容器编排变得轻量化,适合需要快速部署的场景。后续可以结合CI/CD管道实现自动化部署,进一步提升运维效率。
注意:本文所有命令均在测试环境验证通过,生产环境请根据实际情况调整参数。 “`
(全文约3550字,实际字数可能因Markdown渲染略有差异)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。