使用Docker Swarm进行集群管理
引言
Docker Swarm 简介
- Manager Nodes:负责管理和协调集群中的任务,包括调度、负载均衡等。
- Worker Nodes:负责执行具体的任务,运行容器。
安装 Docker
Ubuntu
sudo apt update
sudo apt install docker.io
<div class="cl-preview-section"><h4><a id="4_22"></a>CentOS</h4></div>```bash
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
启动并启用 Docker 服务:
sudo systemctl start docker
sudo systemctl enable docker
初始化 Swarm 集群
sudo docker swarm init --advertise-addr <MANAGER-IP>
命令执行成功后,会输出加入集群的命令,保存该命令以便后续 Worker 节点加入集群。
加入 Worker 节点
sudo docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT>
验证集群状态
sudo docker node ls
部署服务
sudo docker service create --name my-nginx --replicas 3 -p 80:80 nginx
这条命令会在集群中创建一个名为 my-nginx
的服务,运行 3 个副本,并将 80 端口映射到主机的 80 端口。
查看服务状态
sudo docker service ls
扩展服务
my-nginx
服务的副本数增加到 5: sudo docker service scale my-nginx=5
更新服务
my-nginx
服务使用的镜像版本: sudo docker service update --image nginx:latest my-nginx
管理网络
sudo docker network create --driver overlay my-overlay-network
将服务连接到覆盖网络:
sudo docker service create --name my-nginx --replicas 3 -p 80:80 --network my-overlay-network nginx
高级配置
服务滚动更新
sudo docker service create --name my-nginx --replicas 3 -p 80:80 --update-delay 10s --update-parallelism 2 nginx
服务约束
sudo docker node update --label-add role=web node1
sudo docker service create --name my-nginx --replicas 3 -p 80:80 --constraint 'node.labels.role == web' nginx
实际案例
- 微服务架构:管理多个微服务,实现高可用和负载均衡。
- CI/CD 流水线:在 CI/CD 流水线中自动部署和更新服务。
- 边缘计算:在边缘设备上部署和管理容器化应用。
总结
Docker Swarm 可以轻松地管理和扩展容器化的应用,实现高可用和负载均衡。