docker-swarm 节点增加、删除、权限提升、降低、服务部署、配置可视化界面、stack等一系列操作

一、部署环境准备

系统版本:centos :7.8
docker-swarm 至少需要三个节点 所以需要准备三台机器(本文使用虚拟机 虚拟三台 centos机器)配置如下
节点信息

#修改主机名
hostnamectl set-hostname manager-01
主机 ip地址 说明
manager-01 192.168.198.106 swarm-manager节点
work-01 192.168.198.107 swarm-work01节点
work-02 192.168.198.108 swarm-work02节点

硬件要求:

硬件资源 最小配置 推荐配置
CPU 1CPU 2CPU
内存 1G 2-4G
硬盘 20G 50G

docker版本:20.10.10

二、初始化docker-swarm 管理节点

#advertise-addr 来指定其他节点连接m0时的地址
#来指定其他节点连接m0时的地址 来指定其他节点连接m0时的地址
#来指定其他节点连接m0时的地址
docker swarm init --advertise-addr 192.168.198.106:2377 --listen-addr
192.168.198.106:2377
#查看节点信息
docker node ls
#查看网络信息 docker-swarm 初始化时会创建一个类型为overlay的网络
docker network ls

执行docker node ls 命令结果如下:
在这里插入图片描述

执行 docker netwok ls 命令结果如下:
docker-swarm 节点增加、删除、权限提升、降低、服务部署、配置可视化界面、stack等一系列操作_第1张图片

三、节点 添加、删除、权限提升、降低

3.1 添加manager 节点 –token 会失效 时效为24小时 以后添加节点时 执行 docker swarm join-token 获取最新的token 标记文本

#在manager节点执行。可以作为manager节点加入集群
docker swarm join-token manager

复制以下内容在其他两台worker主机 上执行 即可将执行的主机 以manager 权限添加到doker-swarm 集群中
![在这里插入图片描述](https://img-blog.csdnimg.cn/f6c71ed223bf4c138554b163c42577b1.png

3.2 添加worker 节点 –token 会失效 时效为24小时 以后添加节点时 执行 docker swarm join-token 获取最新的token

#在manager节点执行。可以作为worker节点加入集群
docker swarm join-token worker

复制以下内容在其他两台worker主机 上执行 即可将执行的主机 以worker 权限添加到doker-swarm 集群中
在这里插入图片描述
节点添加成功后 如下图所示(59.16 59.17 为manager 节点,59.18为worker节点)

MANAGER STATUS列说明:
Leader 意味着该节点是使得群的所有群管理和编排决策的主要管理器节点。
:Reachable 意味着节点是管理者节点正在参与Raft共识。如果领导节点不可用,则该节点有资格被选为新领导者。
:Unavailable 意味着节点是不能与其他管理器通信的管理器。如果管理器节点不可用,您应该将新的管理器节点加入群集,或者将工作器节点升级为管理器。
AVAILABILITY列说明:
Active 意味着调度程序可以将任务分配给节点。
Pause 意味着调度程序不会将新任务分配给节点,但现有任务仍在运行。
Drain 意味着调度程序不会向节点分配新任务。调度程序关闭所有现有任务并在可用节点上调度它们。

在这里插入图片描述

3.3 节点权限提升降低

#将worker节点提升为manager节点,在manager节点执行如下命令:
docker node promote work-01
docker node ls
#将manager节点降低为worker节点,在manager节点执行如下命令:
docker node demote work-02
docker node ls

3.4 脱离集群

#想要那个节点脱离集群就在那个节点下执行以下命令
docker swarm leave

在这里插入图片描述

3.5 删除已经脱离集群的节点

#删除已经脱离集群的work-02节点 ps:如果是多个manager节点中的其中一个节点需要先将节点降为worker节点才能删除
docker node rm work-02
#manager节点只能强制退出 manager退出后意味着整个swarm不复存在。
docker swarm leave --force

在这里插入图片描述

四、安装图形界面

4.1 拉取visualizer 镜像

docker pull dockersamples/visualizer:latest

4.2 创建容器并运行(需要运行在manager节点的主机上)

 docker run -itd --name visualizer -p 8099:8080 -e HOST=192.168.59.16 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer:latest
 #或者使用以下命令  可以通过集群中所有ip+port进行访问
 docker service create \
--name=viz \
--publish=8080:8080/tcp \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer

4.3 安装完成后通过 http://ip:8099 访问
docker-swarm 节点增加、删除、权限提升、降低、服务部署、配置可视化界面、stack等一系列操作_第2张图片

五、创建服务(安装nginx)

5.1 三台主机都下载以下nginx镜像

docker pull nginx:1.18.0-alpine
docker pull nginx:1.19.3-alpine

5.2 部署nginx(通过任意集群内节点的ip+port都可访问)

#在manager节点中创建overlay网络:
docker network create -d overlay nginx-net
#创建5个nginx:alpines容器的集群:
docker service create --name nginx --network nginx-net -p 80:80 --replicas 5 nginx:1.18.0-alpine
#在manager节点使用docker service ls 命令查看服务情况,worker节点无法查看:
docker service ls
#在manager或者worker节点都可以执行docker ps命令查看本虚拟机容器情况:
docker ps
#manager节点只用于管理集群,不希望部署服务。
docker node update --availability drain manager-01
#使用docker service scale nginx=2命令将服务缩减为2个容器:
docker service scale nginx=2

docker-swarm 节点增加、删除、权限提升、降低、服务部署、配置可视化界面、stack等一系列操作_第3张图片
5.3 升级nginx版本

docker service update --image nginx:1.19.3-alpine nginx

docker-swarm 节点增加、删除、权限提升、降低、服务部署、配置可视化界面、stack等一系列操作_第4张图片
5.4 添加过更新一个对外暴露接口

docker service update --publish-add 8090:80 nginx

5.5 删除服务

#删除服务
docker service rm nginx
#删除网络
docker network rm nginx-net

六、stack命令

6.1 创建docker-compose.yml 文件 内容如下:

#stack 最低支持版本为 3
version: "3"
  services:
    nginx-web: # 服务名称
    image: nginx:1.19.3-alpine  # 镜像名称
    container_name: nginx # 容器名称
  networks: 
  - nginx-net #指定网络
  restart: always #重启策略
  ports:
  - 81:80 #挂载端口
  deploy:
    replicas: 5  #生成实例数量
networks:
  nginx-net: #需要创建的网络名称
    driver: overlay #指定网络类型

6.2 运行nginx

#在manager节点中创建docker-compose.yml文件。执行如下命令:
docker stack deploy nginx-stack --compose-file=docker-compose.yml 或者是
docker stack deploy nginx-stack -c docker-compose.yml
#查看stack服务运行情况。执行如下命令:
docker stack services nginx-stack
#查看5个容器运行在哪个节点中。执行如下命令:
docker service ls #查看到NAME中的服务名为:nginx-stack_nginx-web
docker service ps nginx-stack_nginx-web

docker-swarm 节点增加、删除、权限提升、降低、服务部署、配置可视化界面、stack等一系列操作_第5张图片

七、常用命令如下:

swarm命令

命令 描述
docker swarm join 初始化一个 swarm 群集
docker swarm join 加入群集作为节点或管理器
docker swarm join-token 管理用于加入群集的令牌
docker swarm leave 离开 swarm 群集
docker swarm unlock 解锁 swarm 群集
docker swarm unlock-key 管理解锁钥匙
docker swarm update 更新 swarm 群集

node命令

命令 描述
docker node demote 从 swarm 群集管理器中降级一个或多个节点
docker node inspect 显示一个或多个节点的详细信息
docker node ls 列出 swarm 群集中的节点
docker node promote 将一个或多个节点推入到群集管理器中
docker node ps 列出在一个或多个节点上运行的任务,默认为当前节点
docker node rm 从 swarm 群集删除一个或多个节点
docker node update 更新一个节点

service 命令

命令 描述
docker service create 创建服务
docker service inspect 显示一个或多个服务的详细信息
docker service logs 获取服务的日志
docker service ls 列出服务
docker service rm 删除一个或多个服务
docker service scale 设置服务的实例数量
docker service update 更新服务
docker service rollback 恢复服务至update之前的配置

stack命令

命令 描述
docker stack deploy 部署新的堆栈或更新现有堆栈
docker stack ls 列出现有堆栈
docker stack ps 列出堆栈中的任务
docker stack rm 删除一个或多个堆栈
docker stack services 列出堆栈中的服务

你可能感兴趣的:(docker,docker,运维,centos)