【Docker】Swarm集群的配置与管理

2023-11-07

实现Docker Swarm集群部署安装、在线创建Swarm集群和自动编配。

  1. 安装Docker Swarm
    (1)通过实训平台进入到操作系统界面,该实验需要两台虚拟机,首先修改主机名,修改第一台主机的主机名叫smoker,第二台主机的主机名叫joker。进入第一台主机,在#后输入hostnamectl set-hostname smoker命令,然后按Enter键,进入在第二台主机在#后输入hostnamectl set-hostname joker命令,然后按Enter键,进行修改主机名操作。示例代码如下:

#hostnamectl set-hostname smoker

#hostnamectl set-hostname joker

(2)修改两个节点的/etc/hosts文件,在#后面输入vi /etc/hosts命令,然后按Enter键,编辑hosts文件。示例代码如下:

[root@smoker ~]# vi /etc/hosts

进入Vim编辑界面,在键盘上按i键进入编译模式,编辑内容如下:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.24.2.32  smoker

10.24.2.59  joker

编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。

在joker 节点编辑hosts 文件。在#后输入命令vi /etc/hosts命令,然后按Enter键。示例代码如下:

[root@joker ~]# vi /etc/hosts

进入Vim 编辑界面,在键盘上按i键进入编译模式,编辑内容如下:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.24.2.32  smoker

10.24.2.59  joker

编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。

(3)在smoker和joker节点分别修改docker的配置文件,在#后面输入# vi /etc/sysconfig/docker,然后按Enter键,示例代码如下所示:

#vi /etc/sysconfig/docker

进入Vi 编辑界面,在键盘上按i键进入编译模式,添加如下代码:

OPTIONS='-H 0.0.0.0:2375 -H unix:///var/run/docker.sock'

修改配置文件,如图所示:
在这里插入图片描述

编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。

(4)修改完配置文件,重启smoker和joker两个节点的docker服务。在#后面输入systemctl daemon-reload命令,按Enter键,示例代码如下:

# systemctl daemon-reload

(5)两个节点下载swarm镜像。在#后面输入docker pull swarm命令,按Enter键,示例代码如下:

[root@smoker ~]# docker pull swarm

效果如图所示:
smoker节点下载swarm镜像
在这里插入图片描述
joker节点下载swarm镜像
在这里插入图片描述

到此,安装Docker Swarm结束。

2. 在线创建Swarm集群和自动编排

(1)创建swarm(要保存初始化后token,因为在节点加入时要使用token作为通讯的密钥)。在smoker节点执行,示例代码如下(ip为本机ip):

[root@smoker ~]# docker swarm init --advertise-addr 10.24.2.32

执行结果,如图所示:
在这里插入图片描述
创建完成后,进行验证,在#后面输入docker node ls命令,然后按Enter键,查看集群的节点,示例代码如下:

[root@smoker ~]# docker node ls

执行结果,如图所示(ID旁边的*号代表已经连接到这个节点上):
在这里插入图片描述

(2)登录到joker节点,将该节点加入到swarm集群中,在#后面输入示例代码如下所示(token值在smoker节点初始化swarm的时候获得,IP 为smoker节点地址):

[root@joker ~]# docker swarm join --token SWMTKN-1-3e7cr4z7s49qnq45iysn44vqd4wi1zcntpf2ibhsssa44ayg7u-cdobfgbk0tphpmr6i22v82ucx 10.24.2.32:2377

执行结果,如图所示:
在这里插入图片描述
(3)回到smoker节点,在#后输入docker node ls命令,然后按Enter键,查看swarm集群节点信息。示例代码如下:

[root@smoker ~]# docker node ls

执行结果,如图所示:
在这里插入图片描述

(4)在启动容器之前,先来创建一个覆盖网络,用来保证在不同主机上的容器网络能够互通。在#后输入 docker network create -d overlay ngx_net命令,然后按Enter键,创建网络,示例代码如下:

[root@smoker ~]# docker network create -d overlay ngx_net

执行结果,如图所示:
在这里插入图片描述

(5)在smoker节点上使用上面这个覆盖网络创建nginx服务:其中,–replicas 参数指定服务由几个实例组成。注意:不需要提前在节点上下载nginx镜像,这个命令执行后会自动下载这个容器镜像(比如创建tomcat容器,就将下面命令中的镜像改为tomcat镜像)。在#后输入docker service create --replicas 1 --network ngx_net --name my-test -p 80:80 nginx命令,然后按Enter键,创建容器,示例代码如下:

[root@smoker ~]# docker service create --replicas 1 --network ngx_net --name my-test -p 80:80 nginx

执行结果,如图所示:
在这里插入图片描述

(6) 在#后输入 docker service ls命令,然后按Enter键,查看正在运行服务的列表,示例代码如下:

[root@smoker ~]# docker service ls

执行结果,如图所示:
在这里插入图片描述

(7) 在#后输入docker service ps my-test命令,然后按Enter键,查询容器运行在哪个节点,示例代码如下:

[root@smoker ~]# docker service ps my-test

执行结果,如图所示:
在这里插入图片描述
(8) 可以通过 docker service scale 命令来设置服务中容器的副本数:比如将上面的my-test容器动态扩展到5个,在#后输入docker service scale my-test=5命令,然后按Enter键,动态扩容,示例代码如下:

[root@smoker ~]# docker service scale my-test=5

执行结果,如图所示:
在这里插入图片描述

(9) 在#后输入docker service ps my-test命令,然后按Enter键,查看容器在swarm节点中的启动情况,示例代码如下:

[root@smoker ~]# docker service ps my-test

执行结果,如图所示:

在这里插入图片描述
可以看到,swarm会自动编排容器到集群中的节点上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Docker】Swarm集群的配置与管理 的相关文章

随机推荐

  • 错误:No rule to make target `../pubbusiness/localshareapi/localsharerecv.cpp,need by ‘temp/localshare

    出现这个错误的原因 排查方向往出现错误的那个文件 可能有比如引用此文件的路径不对 工程更改路径或者更改了其中的文件夹名称等 解决方案 1 查看 pro或 pri文件里路径的 h或 cpp的加载路径有没有错 我的是因为这个原因 2 删除之前编
  • Jauns-gateway 报错【No package ‘libssl‘ found No package ‘libcrypto‘ found】

    No package libssl found No package libcrypto found 在Mac下配置janus gateway服务器的时候遇到了找不到libssl和libcrypto错误 详情如下 configure che
  • Java接口:实现多重继承,促进代码复用与扩展的强大工具

    目录 1 接口的定义与成员 2 接口的实现 3 接口的多继承与多态 3 1实现多重继承 3 2促进代码复用与扩展 4 Java新特性 默认方法 静态方法与私有方法 5 结语 1 接口的定义与成员 Java中使用interface关键字定义接
  • 即时通讯IM技术领域基础篇

    转自 https juejin im post 5a694f216fb9a01cb74e8f74 即时通讯IM技术领域基础篇 即时通讯IM技术领域提高篇 议题 准备工作 协议选型 网络传输协议选择 和 数据通信协议选择 xxx项目架构 架构
  • 重学java—基础知识点

    数据类型 1 基本数据类型 boolean 1 byte 8 char 16 short 16 int 32 float 32 long 64 double 64 每个类型都有它对应的包装类 自动装箱和拆箱操作 2 缓存池 valueOf
  • Rem与Px的转换

    rem是CSS3中新增加的一个单位值 他和em单位一样 都是一个相对单位 不同的是em是相对于元素的父元素的font size进行计算 rem是相对于根元素html的font size进行计算 这样一来rem就绕开了复杂的层级关系 实现了类
  • xshell7和xftp7下载和安装

    xshell7和xftp7下载和安装 环境 win10 链接 https pan baidu com s 1i6Zl2eW8tJJ83YAc02oQjg 提取码 6666 复制这段内容后打开百度网盘手机App 操作更方便哦 2022年06月
  • pandas 读/写取多个sheet 的excel

    经常使用pandas 读取多个sheet 的文件 读取方式 先获得sheet 名字 再指定sheet name 参数进行读取 写多个sheet 到同一个文件 import pandas as pd infile data test xlsx
  • FileReader与FileWriter

    FileReader与FileWriter分别继承Reader和Writer 以字符为单位广泛用于文件操作的节点流 FileReader类用于从文本文件读数据 每次读入一个字符或者一个字符数组 FileWriter类用于从文本文件写数据 每
  • 学python的第十四天---小蓝(5)

    一 最长公共子序列 dp 二 蓝桥骑士 最长递增子序列 三 蓝肽子序列 最长公共子序列 四 合唱队形 最长递增子序列 五 字符串编辑问题 引入一个难一点的题目 最优包含 一 最长公共子序列 dp Maxn 1005 dp 0 for in
  • 英寸和厘米的换算python_运用python实现英制单位英寸与公制单位厘米互换

    原标题 运用python实现英制单位英寸与公制单位厘米互换 python能实现的东西有很多 其中就有运用python来实现英制单位英寸与公制单位厘米互换 那么具体应用怎么换算呢 下面羽忆教程网为你提供运用python实现英制单位英寸与公制单
  • 【cocosStudio】查看官方示例--调用cocoStudio控件

    理解 将cocoStudio的ui控件转换成cocos的GUI控件来操作 通过widgetFromJsonFile 加载根容器Plane控件 通过Helper seekWidgetByTag 寻找子控件 打开官方示例 打开CMD CD到D
  • Java远程调试(Remote Debug)可导致远程命令执行漏洞

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Java远程调试 Remote Debug 可导致远程命令执行漏洞 注释startup sh第2行 bin bash declare x CATALINA OPTS ser
  • css元素定位:通过元素的标签或者元素的id、class属性定位

    前言 大部分人在使用selenium定位元素时 用的是xpath元素定位方式 因为xpath元素定位方式基本能解决定位的需求 xpath元素定位方式更直观 更好理解一些 css元素定位方式往往被忽略掉了 其实css元素定位方式也有它的价值
  • python2.7下input()函数输入参数

    使用input 函数 在运行时输入字符需要用引号括起来 但在交互模式下不需要 question Traceback most recent call last File
  • 从零编写c++之http服务器(3)-http服务

    http全称超文本传输协议 可调试性高 扩展性也强 上两个篇章我们已经拥有了epoll事件驱动框架和线程池处理网络事件 接下来我们要先写一个基础网络套接字 然后在此基础上扩展出http的套接字 献上类图如下 完整源码见
  • 也要适当晋升

    和一个哥们聊天 说到要不要当组长这个话题 我说我被无良组长们坑坏了 自己搞不定老往下属身上推 我如果当组长 肯定也是无良组长 水平菜 成为自己讨厌的人 他说 哥们 你还是不懂职场规则啊 别说让当 就是不让当 也要创造条件去当 公司资源可以提
  • connect to host master port 22: No route to host 问题解决方案

    问题描述 connect to host master port 22 No route to host 问题分析 先去ifconfig能不能出现你自己配的网卡 一般情况是不能的 或者重启网卡会启动失败 当然了使用远程连接工具也会连接不上
  • h5微信公众号分享:错误40048,invalid url domain与错误63002,invalid signature问题解决

    1 错误 63002 config fail Error 系统错误 错误码 63002 invalid signature 20201207 15 10 10 1 发送当前接口请求的页面URL需要跟后台协商 是否需要编码 以什么样的形式发送
  • 【Docker】Swarm集群的配置与管理

    实现Docker Swarm集群部署安装 在线创建Swarm集群和自动编配 安装Docker Swarm 1 通过实训平台进入到操作系统界面 该实验需要两台虚拟机 首先修改主机名 修改第一台主机的主机名叫smoker 第二台主机的主机名叫j