💓 博客主页:瑕疵的CSDN主页
📝 Gitee主页:瑕疵的gitee主页
⏩ 文章专栏:《热点资讯》
使用Docker Swarm进行集群管理
- 引言
- Docker Swarm 简介
- 安装 Docker
- Ubuntu
- CentOS
- 初始化 Swarm 集群
- 加入 Worker 节点
- 验证集群状态
- 部署服务
- 查看服务状态
- 扩展服务
- 更新服务
- 管理网络
- 高级配置
- 服务滚动更新
- 服务约束
- 实际案例
- 总结
- Manager Nodes:负责管理和协调集群中的任务,包括调度、负载均衡等。
- Worker Nodes:负责执行具体的任务,运行容器。
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
在 Manager 节点上初始化 Swarm 集群:
sudo docker swarm init --advertise-addr <MANAGER-IP>
命令执行成功后,会输出加入集群的命令,保存该命令以便后续 Worker 节点加入集群。
在 Worker 节点上运行以下命令加入集群:sudo docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT>
在 Manager 节点上运行以下命令验证集群状态:
sudo docker node ls
在 Swarm 集群中部署服务非常简单。以下是一个示例,部署一个 Nginx 服务:
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
Docker Swarm 支持多种网络模式,包括覆盖网络(overlay network)。创建一个覆盖网络:
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
Docker Swarm 支持服务的滚动更新,确保在更新过程中服务始终可用。在创建服务时,可以指定更新策略:
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
Docker Swarm 已经被广泛应用于各种场景,例如:
- 微服务架构:管理多个微服务,实现高可用和负载均衡。
- CI/CD 流水线:在 CI/CD 流水线中自动部署和更新服务。
- 边缘计算:在边缘设备上部署和管理容器化应用。
Docker Swarm 可以轻松地管理和扩展容器化的应用,实现高可用和负载均衡。