docker之Docker Swarm集群

本文详细介绍Docker Swarm集群的搭建步骤,包括节点安装与配置、集群初始化、服务部署、滚动更新及集群删除。同时,介绍Visualizer和Portainer的安装与使用,实现集群状态的可视化监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.Docker Swarm集群的搭建部署

Docker Swarm集群的搭建

1、三个节点安装Docker并开启服务
配置好dockeryum源
在这里插入图片描述
下载安装docker

[root@server1 docker]# yum install docker-ce  -y
[root@server1 ~]# systemctl start docker

##server2,server3类似

2、初始化集群

[root@server1 ~]# docker swarm init

在这里插入图片描述

在server1节点上查看桥接信息
在这里插入图片描述
在server1节点上查看docker的网络信息
在这里插入图片描述
3、server2,server3(worker节点)加入集群

[root@server2 ~]# docker swarm join \
> --token SWMTKN-1-36j2ld6xqyfjspr2c05i3qnutapuk4x89nha6w0nfbr1mg3krb3dc4aphv0jxu0wuivo2eviirk \
> 172.25.83.1:2377
 
[root@server3 ~]# docker swarm join \
 --token SWMTKN-1-36j2ld6xqyfjspr2c05i3qnutapuk4x89nha6w0nfbr1mg3krb3dc4aphv0jxu0wuivo2eviirk \
> 172.25.83.1:2377

在server1(manager节点)查看节点信息
在这里插入图片描述
在server2节点上查看桥接信息
在这里插入图片描述
在server2节点上查看docker的网络信息
在这里插入图片描述部署服务:
1、三个节点都要导入nginx镜像

[root@server1 ~]# docker load -i nginx.tar 
[root@server2 ~]# docker load -i nginx.tar 
[root@server3 ~]# docker load -i nginx.tar 

2、在manager节点上部署Nginx容器

[root@server1 ~]# docker network create -d overlay my_net1   #创建驱动为overlay的网络
[root@server1 ~]# docker service create --name web  \
> --network my_net1 \
> --replicas 3 \   #–replicas 3就是代表集群的个数变为3。manager会将容器平均分配到三个节点上
> -p 8080:80 \   #或-publish 8080:80或-publish=8080:80/tcp
> nginx   #创建一个名称为web,副本为3,开放端口为80的nginx容器

查看docker服务列表
在这里插入图片描述
查看三台主机节点的nginx服务的默认发布页
在这里插入图片描述
3.三个节点都要操作:从容器中复制文件到主机nginx默认发布目录

[root@server1 ~]# vim index.html
server1
[root@server1 ~]# docker cp index.html 62455b51943c:/usr/share/nginx/html

server2,server3同上
4、在物理机上测试(负载均衡)

在这里插入图片描述

二、Docker Swarm集群安装Visualizer

Visualizer是一个图形化界面,显示Docker Swarm集群中各个节点状态、运行容器以及负载情况的监控工具。

Visualizer安装与部署
1.在server1上,导入visualizer镜像

[root@server1 ~]# docker load -i visualizer.tar 

2.创建swarm的监控容器

[root@server1 ~]# docker service create --name viz \
> --publish=8888:8080/tcp \   #或者--publish 8888:8080 或者-p 8888:8080
> --constraint=node.role==manager \
> --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
> dockersamples/visualizer

查看运行viz的容器
在这里插入图片描述
3.测试:web页面去监控管理的集群每个容器的状态
在这里插入图片描述
当server3的docker服务关闭后,web从server3转移到别的节点(这里是server2)

[root@server1 ~]# docker service ps web 
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE               ERROR                              PORTS
au4y4xv9gtkw        web.1               nginx:latest        server2             Ready               Preparing 3 seconds ago                                        
j9bafv99eccf        web.2               nginx:latest        server1             Running             Running about an hour ago                                      
smmgz35w8hzi        web.3               nginx:latest        server2             Running             Running about an hour ago                                      

在这里插入图片描述
当增加服务的数目时,Docker swarm集群会自动分配每个节点的web数目,并展示到监控界面
在这里插入图片描述

Docker Swarm集群的滚动更新(灰度更新)

1、导入要更新镜像

    [root@server1 ~]# docker load -i httpd.tar 
    [root@server2 ~]# docker load -i httpd.tar 
    [root@server3 ~]# docker load -i httpd.tar 

2、增加web服务数目为30(这步可做可不做。)

[root@server1 ~]# docker service scale web=30

滚动更新之前镜像是nginx:latest
在这里插入图片描述
3、设定每5秒更新一次,每次更新10个

[root@server1 ~]# docker service update --image httpd --update-delay 5s --update-parallelism 10 web

滚动更新之后镜像变成httpd:latest

在这里插入图片描述

三、docker portainer

1.导入portainer镜像

给manager端导入portainer和portainer-agent
给worker端导入portainer-agent

[root@server1 ~]# docker load -i portainer-agent.tar
[root@server1 ~]# docker load -i portainer.tar

输入命令docker stack deploy -c portainer-agent-stack.yml portainer
在这里插入图片描述
docker service create --name viz --publish=8888:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock dockersamples/visualizer

2.再浏览器上进行查看
输入用户名,输入两次密码进行注册
在这里插入图片描述
在这里插入图片描述
即可在图形化的页面对Docker Swarm集群进行操作
在这里插入图片描述

四、Docker Swarm集群的删除

1.删除创建的web服务和viz服务

[root@server1 ~]# docker service rm viz   #在manager节点上删除创建好的viz服务。
[root@server1 ~]# docker service rm web   #在manager节点上删除创建好的web服务。那么运行的容器也会相应的停止
[root@server1 ~]# docker ps   #查看manager节点上运行的容器,发现之前运行的容器已经不存在了
CONTAINER ID        IMAGE                             COMMAND             CREATED             STATUS                       PORTS               NAMES
[root@server2 ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@server3 ~]# docker ps   #查看node节点上(server3)上运行的容器,发现之前运行的容器已经不存在了
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

2.各个节点离开集群(必须先是node节点离开集群,然后manager节点才能离开集群)

[root@server2 ~]# docker swarm leave   #server2对应的node节点离开集群
[root@server3 ~]# docker swarm leave   #server3对应的node节点离开集群
[root@server1 ~]# docker swarm leave --force   #必须使用参数--force,强制离开集群,否则会报错
[root@server1 ~]# docker node ls   #此时再次查看集群的节点,会报错。这是因为集群已经被删除了,该节点不再是manager节点,而只有manager节点才能查看集群的节点。
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值