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

2023-11-18

一、部署环境准备

系统版本: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 命令结果如下:
在这里插入图片描述

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

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 访问
在这里插入图片描述

五、创建服务(安装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

在这里插入图片描述
5.3 升级nginx版本

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

在这里插入图片描述
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

七、常用命令如下:

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 列出堆栈中的服务
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 在 Docker 容器中以主机用户身份运行

    在我的团队中 我们在进行开发时使用 Docker 容器在本地运行我们的网站应用程序 假设我正在开发 Flask 应用程序app py具有依赖关系requirements txt 工作流程大致如下 I am robin and I am in
  • 在ubuntu内核中启用cgroup cpu实时运行时

    我正在尝试在 Ubuntu 18 04 上运行的 docker 容器中使用实时调度 我已经按照给定的方法安装了实时内核here https stackoverflow com questions 51669724 install rt li
  • Docker Compose - 如何执行多个命令?

    我想做这样的事情 我可以在以下代码中运行多个命令 db image postgres web build command python manage py migrate command python manage py runserver
  • dockerfile 没有创建目录并复制文件?

    我的 dockerfile 中有以下内容 还有很多 不过我把相关的部分贴在这里了 RUN useradd jenkins USER jenkins Maven settings RUN mkdir m2 COPY settings xml
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • 无法通过 macvlan 网络从主机访问 docker 容器

    在我的 Linux 网络中 我无法通过专用 macvlan 网络从运行它们的主机访问我的 docker 容器 到此 macvlan 网络的所有其他连接都正常 所以基本上设置是 DOCKER1 eth0 172 0 0 1 default e
  • Consul 未取消注册僵尸服务

    我正在使用 marathon 部署一个简单的 hello world nginx 容器 一切似乎都运行良好 除了我有 6 个容器不会从 consul 注销 docker ps显示没有容器正在运行 我尝试使用 v1 catalog dereg
  • Docker 主机上运行的容器是否有最大数量?

    基本上 标题说明了一切 在单个 Docker 主机上同时运行的容器数量是否有限制 您可能会遇到 并解决 许多系统限制 但存在大量灰色区域 具体取决于 您如何配置 Docker 容器 您在容器中运行的内容 您使用的内核 发行版和 docker
  • 在 config.js 中打开 admin 以查看服务器统计信息

    拉动后运行此命令 docker run d p 27017 27017 e MONGO INITDB ROOT USERNAME admin e MONGO INITDB ROOT PASSWORD password name mongod
  • Daphne Django 文件上传大小限制

    我使用 Daphne 进行套接字和 http 连接 我正在运行 4 个工作容器 并且现在在 docker 容器中本地运行所有内容 如果我尝试上传 400MB 的文件 我的 daphne 服务器会失败 它适用于最大 15MB 的小文件 我的
  • 如何获取已退出的 docker 容器的数字退出状态?

    当容器退出时 docker ps a显示其退出代码 滚动 docker run ubuntu bash c exit 1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c2c76
  • 如何使用缓存快速重建dockerfile?

    我想优化我的 Dockerfile 我希望将缓存文件保留在磁盘中 但是 当我跑步的时候我发现docker build 它总是尝试从网络获取每个文件 我希望在构建期间共享我的缓存目录 例如 var cache yum x86 64 6 但是
  • 无法通过docker连接到ASP.NET Core

    大家好 人们已经关注这个问题太久了 需要一些帮助 我制作了一个 ASP NET Core 网站 没有什么特别的 只是 VS 2017 v 1 1 附带的模板 我使用 dotnet core cli 发布网站并使用此 dockerfile 构
  • 如何在没有 Visual Studio 和 docker compose 的情况下使用 docker 复制 csproj 文件?

    我刚刚使用 Visual Studio 15 8 8 启动了一个 NET Core 项目 2 1 的新解决方案 通过将docker compose文件设置为启动项目即可运行和调试 有用 从逻辑上讲 我应该能够使用简单的命令行语句构建 doc
  • Docker Python 脚本找不到文件

    我已经成功构建了一个 Docker 容器 并将应用程序的文件复制到 Dockerfile 中的容器中 但是 我正在尝试执行引用输入文件 在 Docker 构建期间复制到容器中 的 Python 脚本 我似乎无法弄清楚为什么我的脚本告诉我它无
  • kubectl:在 WSL 终端中找不到

    我按照以下说明在 Windows10 上安装了 WSL2 https learn microsoft com en us windows wsl install win10 https learn microsoft com en us w
  • 带有 mysql 数据的 WordPress 图像

    是否有包含 wordpress 和 mysql 数据的可用图像 当我提交并备份映像时 不包括 mysql 数据 我更喜欢两者都用一张图片 我尝试使用这个 Dockerfile 创建这样的图像 FROM tutum lamp latest R
  • pq:无法调整共享内存段的大小。设备上没有剩余空间

    我在仪表板上有许多面板 数量约为 6 个 用于显示数据点图表 对 PostgreSQL 数据库的 Dockerized 实例进行查询 直到最近 面板都工作正常 有些面板停止工作并报告如下错误 pq 无法将共享内存段 PostgreSQL 2
  • 在 CentOS 中安装 PHP Zip 扩展

    我正在尝试在 CentOS 中安装 PHP Zip 扩展 我的服务器没有外部互联网访问权限 所以我自己从 PECL 下载了它 http pecl php net package zip http pecl php net package z
  • 集群负载均衡是否应该在其节点上执行运行状况检查?

    The 负载均衡 https docs docker com engine swarm key concepts load balancingswarm 文档中的部分没有明确说明内部负载均衡器是否也进行健康检查 以及是否删除不再运行该服务的

随机推荐

  • 小白入坑-利用express构建一个简单的Node项目

    做了部分前端的东西 当然不能局限眼前的成果 梦想能成为全栈的大佬 然后左手一个小姐姐 右手一个富萝莉 走远了 奈于java对前端来说比较难 耗费的学习时间也比较长 所以先从node下手过一下瘾儿 首先 win r打开windows的运行框
  • 什么是堡垒机

    什么是堡垒机 1 堡垒机是用来解决 运维混乱 的 堡垒机是用来干什么的 简而言之一句话 堡垒机是用于解决 运维混乱 的 何谓运维混乱 当公司的运维人员越来越多 当需要运维的设备越来越多 当参与运维的岗位越来越多样性 如果没有一套好的机制 就
  • Git入门超详细文档

    Git Git概述 Git是一个免费的 开源的分布式版本控制系统 可以款速高效的处理从小型到大型的各种项目 Git易于学习 占地面积小 性能极佳 它具有廉价的本地库 方便的暂存区域和多个工作流分支等特性 其性能优于Subversion CV
  • 试除法判定质数模板题

    试除法判定一个数是否为质数类似于这道题 代码 include
  • mac文件夹权限的@

    demo是网站根目录 终端下执行 cd到demo ls l 显示 drwxr xr x 9 andy admin 306 10 12 17 43 demo 这里的 貌似是mac特有的 第一次使用file put contents往根目录添加
  • QMutex使用时遇到的错误

    class A public explicit A QObject parent 0 A public QMutex m mutex class B public explicit B QObject parent 0 B private
  • C语言笔记 第三章 键盘输入与输出

    文章目录 1 printf 1 1 整型 1 2 字符型 1 3 浮点型 1 4 其他 1 4 1 标志 1 4 2 输出最小宽度 1 4 3 精度 1 4 4 类型长度 1 5 转义字符 2 scanf 2 1scanf 函数的一般形式
  • 网络安全----应急响应入侵排查

    系列文章目录 Web网络安全 红蓝攻防之信息收集 Web网络安全 Log4j高危漏洞原理及修复 Shell分类详解 图形界面 命令行式 Linux安全 应急溯源常用命令 记一次实战成功溯源反制getshell 文章目录 系列文章目录 一 应
  • ADS1256驱动程序

    1 初始化 接口 SPI2 STM32 ADS1256 NSS PB12 CS SCK PB13 SCLK MISO PB14 DOUT MOSI PB15 DIN PB10 DRDY PB11 RESET
  • 感知机介绍及实现

    感知机 perceptron 由Rosenblatt于1957年提出 是神经网络与支持向量机的基础 感知机是最早被设计并被实现的人工神经网络 感知机是一种非常特殊的神经网络 它在人工神经网络的发展史上有着非常重要的地位 尽管它的能力非常有限
  • 错误ValueError: Buffer dtype mismatch, expected ‘float32_t‘ but got ‘double

    PCL库调用错误 cloud0 from array all pointcloud world File pcl pxi PointCloud PointXYZ 180 pxi line 160 in pcl pcl PointCloud
  • 一款强大的API接口文档管理工具(Smart-Doc + Torna)

    本文由龙飞同学供稿 在团队协作开发项目的时候 接口文档承担着向其他开发人员说明接口相关信息的重要任务 因此 一份清晰而又相近的接口文档至关重要 但是 写接口文档的痛苦想必各位开发人员都体验过 明明写接口的时候那么丝滑 写接口文档的时候像要老
  • linux 系统下执行R文件

    随着数据量的激增 在linux系统环境下执行数据分析模型显得很重要 本文来总结下在linux系统下执行R文件的步骤 step01 创建R脚本 例如 Rtest R step02 创建shell脚本 例如 runRtest sh 内容为 bi
  • 自由软件基金会公布了AGPL v3许可证

    自由软件基金会发布了一种新的开放源代码软件许可 新许可面向其代码被用作软件服务化 SaaS 应用的开发人员 新许可将确保对开放源代码SaaS应用代码的修改会反馈给自由软件社区 新许可名称为GNU Affero General Public
  • CCF-CSP-202109-4-收集卡牌

    原题链接 满分代码 include
  • eplan怎样创建和修改图框_EPLAN标题页及图框的设计

    标题页理解为特殊的表格 选择 工具 主数据 表格 打开 弹出 打开表格 对话框 文件类型 标题页 封页 f26 选择需要打开的表格 点击打开按钮 表格中的元素 1 文本 表示普通的 固定的文字 2 特殊文本 表达项目属性 页或表格属性的值
  • oracle 分表

    项目中操作日志因为数据量过大所以做分表操作 MYBATIES 创建表
  • .Net项目github接入sonarcloud

    代码质量方面的检测工具 在这之前从来没用过 就算前阵子听说了sonarcloud 也仅当知道记录了下 结果昨天被某些事情刺激了下 于是去查了下资料 然后就顺便在github上做了下测试 这里做个记录 sonarcloud的官网地址是http
  • JUC并发编程狂神说笔记(超详细)

    JUC 环境准备 线程和进程 wait与sleep的区别 lock锁 重点 传统的Synchronized锁 Lock锁 接口 Sychronized和lock的区别 锁是什么 如何判断锁的是谁 生产者和消费者的问题 Sychronized
  • docker-swarm 节点增加、删除、权限提升、降低、服务部署、配置可视化界面、stack等一系列操作

    一 部署环境准备 系统版本 centos 7 8 docker swarm 至少需要三个节点 所以需要准备三台机器 本文使用虚拟机 虚拟三台 centos机器 配置如下 节点信息 修改主机名 hostnamectl set hostname