一文读懂Docker之Docker Swarm集群平台搭建

embedded/2025/2/25 12:30:09/

目录

一、Docker Swarm简介

1、基本架构图

2、关键概念

(1)、Swarm

(2)、Node节点

(3)、service服务

(4)、task任务

3、工作模式

(1)、Node节点

(2)、Service服务

(3)、任务与调度

(4)、服务副本与全局服务

4、调度策略

5、集群模式特性

二、Docker Swarm集群部署

1、准备工作

(1)、主机规划:

(2)、分别修改manager、worker节点hostname

(3)、分别修改manager、worker节点hosts文件

(4)、关闭防火墙

docker-toc" name="tableOfContents" style="margin-left:40px">2、安装docker

(1)、切换镜像源

docker%E7%89%88%E6%9C%AC-toc" name="tableOfContents" style="margin-left:80px">(2)、查看当前镜像源中支持的docker版本

docker-ce-toc" name="tableOfContents" style="margin-left:80px">(3)、 安装特定版本的docker-ce

(4)、添加一个配置文件

docker-toc" name="tableOfContents" style="margin-left:80px">(5)、启动docker

docker%E7%8A%B6%E6%80%81%E5%92%8C%E7%89%88%E6%9C%AC-toc" name="tableOfContents" style="margin-left:80px">(6)、检查docker状态和版本

(7)、 配置解决镜像拉取慢的问题(每个节点均要执行)

docker%E5%9C%A8%E6%9C%AC%E6%9C%BA%E7%9A%84%E9%85%8D%E7%BD%AE%E7%9B%AE%E5%BD%95%C2%A0%EF%BC%8C%E6%AD%A4%E5%A4%84%E4%B8%BA%2Fetc%2Fdocker-toc" name="tableOfContents" style="margin-left:120px">步骤一、进入docker在本机的配置目录 ,此处为/etc/docker

步骤二、新建配置文件daemon.json,

docker-toc" name="tableOfContents" style="margin-left:120px">步骤三、重启docker

3、Manager节点创建Swarm集群

(1)、创建集群

(2)、查看集群信息

4、Worker节点加入集群


一、Docker Swarm简介

       

         Swarm是Docker公司推出的用来管理docker集群的平台,可以让用户很容易的部署跨主机的容器集群服务。Docker Swarm 和 Docker Compose 都是 Docker 官方容器编排项目,不同的是Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务。对于微服务的部署,显然 Docker Swarm 会更加适合。

        从 Docker 1.12.0 版本开始,Docker Swarm 已经包含在 Docker 引擎中,并且已经内置了服务发现工具。

  Swarm只是一个调度器(Scheduler)加路由器(router),它本身不运行容器,只接受Docker客户端发来的请求,调度适合的节点来运行容器。即使Swarm由于某些原因挂掉,集群中的节点也会正常运行,等到Swarm重新恢复运行后,它会收集重建集群信息。

1、基本架构图

       

         在结构图可以看出 ,Docker Client使用Swarm对集群(Cluster)进行调度使用。Swarm 集群由管理节点(manager)和工作节点(worker)构成。Swarm是典型的master-slave结构,通过发现服务来选举manager。manager是中心管理节点,各个node上运行agent接受manager的统一管理,集群会自动通过Raft协议分布式选举出manager节点,避免了单点的瓶颈问题,同时也内置了DNS的负载均衡和对外部负载均衡机制的集成支持。

2、关键概念

(1)、Swarm

        集群的管理和编排是使用嵌入docker引擎的SwarmKit,可以在docker初始化时启动swarm模式或者加入已存在的swarm。

(2)、Node节点

  • Manager节点:负责整个集群的管理,包括集群配置、服务管理等所有跟集群相关的工作。Manager节点选举一个leader节点去执行调度任务。
  • Worker节点:接收并执行从管理器节点分派的任务,参与容器集群负载调度,主要负责运行相应的服务(容器)来执行任务(task)。

(3)、service服务

        一个服务是工作节点上执行任务的定义。创建一个服务,指定了容器所使用的镜像和容器运行的命令。Service是运行在Worker节点上的task的描述,Service的描述包括使用哪个docker 镜像、服务网络、服务端口、服务副本数等。

(4)task任务

        一个任务包含了一个容器及其运行的命令。task是Service的执行实体,task启动docker容器并在容器中执行任务。

3、工作模式

(1)、Node节点

(2)、Service服务

(3)、任务与调度

(4)、服务副本与全局服务

4、调度策略

        Swarm在调度运行容器的时候,会根据指定的策略来计算最适合运行容器的Worker节点。目前支持的策略有:random、spread、binpack。

  • Random:随机选择一个Worker节点来运行容器
  • Spread:在同等条件下,Spread策略会选择运行容器最少的Worker节点来运行新的容器。使用Spread策略会使得容器均衡的分布在集群的各个Worker节点上。
  • Binpack:Binpack策略会把还未使用的节点留给需要更大空间的容器运行,尽可能的把容器运行在同一个节点上面,最大化避免容器碎片化。


http://www.ppmy.cn/embedded/165053.html

相关文章

Android开发数据持久化

Android系统中主要提供了三种方式用于简单的实现数据持久化功能, 分别是:文件存储,SharedPreferences存储以及数据库存储。 文件存储:核心技术就是用Context 类中提供openFileInput()和openFileOutput()方法,之后利用…

linux--多进程基础(2)GDB多进程调试(面试会问)

将其中的命令记住就行。 总结:GDB下默认调试父进程,可以设置调试父进程还是子进程,也可以设置调试模式,调试模式默认是on即一个在调试另一个直接运行,off就是另一个进程挂起,最后可以查看调试进程 一般默认…

HTML 简介

HTML 简介 引言 HTML,即超文本标记语言(HyperText Markup Language),是互联网上用于创建网页的标准标记语言。自从1990年蒂姆伯纳斯-李(Tim Berners-Lee)发明以来,HTML已经成为了构建网页和网…

【现代深度学习技术】卷积神经网络 | 图像卷积

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…

Django数据库操作

1、ORM 创建、删除、修改数据库的表中的数据,但不能创建数据库往数据库表中写入数据 表名:app名称_类名的小写 2、操作表数据 from django.db import modelsclass Department(models.Model):title models.CharField(verbose_name"部门", …

Qt开发⑦Qt的窗口_上_菜单栏+工具栏+状态栏

目录 1. 菜单栏 1.1 创建菜单栏 1.2 在菜单栏中添加菜单 1.3 创建菜单项 1.4 在菜单项之间添加分割线 1.5 添加快捷键 1.6 添加子菜单 1.7 添加图标 1.8 综合示例 2. 工具栏 2.1 创建工具栏 2.2 设置停靠位置 2.3 设置浮动属性 2.4 设置移动属性 2.5 综合示例 …

uniapp使用uts插件启动原生安卓Service

uniapp使用uts插件启动原生安卓Service 背景实现尾巴 背景 在上一篇文章中uniapp使用uts插件调用原生API,我们使用uts插件来实现了一个简单的例子来调用原生安卓平台的Toast。今天我们继续使用uts插件来实现一个稍微复杂点的例子,启动一个原生安卓平台的…

前端面试-webpack篇

Webpack的构建流程 Webpack 的构建流程可以总结为以下几个关键步骤: 初始化参数: 从配置文件和命令行参数中读取并合并配置,得到最终的构建参数。 开始编译: 初始化 Compiler 对象,加载所有配置的插件,执行…