快速上手 Docker Swarm:构建分布式容器集群、轻松管理节点和服务

news2024/11/27 1:34:29

什么是Docker Swarm

Docker Swarm 是 Docker 的内置编排工具,它允许将多个 Docker 主机组成一个集群,并以统一的方式管理和部署容器化应用程序。Swarm 提供了高可用性、伸缩性和容错能力,使得应用程序能够在集群中弹性地运行和扩展。

Docker Swarm的优点

  • 内置支持:Docker Swarm 是 Docker 官方提供的解决方案,与 Docker 引擎紧密集成,无需额外安装和配置。
  • 简单易用:Swarm 的命令和操作与 Docker 引擎类似,易于理解和学习。它提供了简化的命令和配置选项,使得容器编排变得简单。
  • 可扩展性:Swarm 可以轻松扩展到数百甚至数千个节点,支持大规模容器部署和管理。
  • 高可用性:Swarm 提供容错和故障恢复机制,确保在节点故障或服务异常时,应用程序能够继续运行。
  • 安全性:Swarm 支持安全传输和身份验证,保护集群和容器的安全。
  • 与 Docker 生态系统集成:Swarm 可与其他 Docker 工具和服务集成,如 Docker Compose、Docker Registry 等,提供完整的容器化解决方案。

概念

节点

swarm 集群由管理节点(manager)和工作节点(work node)构成。

  • manager:负责整个集群的管理工作,包括集群配置、服务管理等所有跟集群有关的工作。
  • work node:主要负责运行从管理节点分派的任务,管理节点也默认作为工作节点。
    在这里插入图片描述

服务和任务

任务(Task)是Swarm中的最小调度单位。服务(Services)是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

  • replicaetd services:按照一定规则在各个工作节点上运行指定个数的任务。
  • global services:每个工作节点上运行一个任务
    在这里插入图片描述

初始化 swarm 集群

在一个管理节点执行初始化命令:

$ docker swarm init --advertise-addr 192.168.99.107
Swarm initialized: current node (dlkndguzu1qburlzblvmym828) is now a manager.
To add a worker to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

在工作节点执行join命令加入集群(命令复制于初始化命令的输出内容):

$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
This node joined a swarm as a worker.

docker swarm常用命令:

    命令                   说明
docker swarm init             初始化集群
docker swarm join-token worker     查看工作节点的 token
docker swarm join-token manager    查看管理节点的 token
docker swarm join             加入集群
docker swarm leave                   离开集群

查看节点信息

$ docker node ls
ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
1bcef6utixb0l0ca7gxuivsj0    worker2         Ready   Active
38ciaotwjuritcdtn9npbnkuz    worker1         Ready   Active
e216jshn25ckzbvmwlnh5jr3g *  manager1        Ready   Active        Leader

下线一个节点(节点不再参与任务分配):

docker node update --availability drain worker1

上线一个节点:

docker node update --availability active worker1

docker node常用命令:

命令              说明
docker node ls         查看集群中的所有节点
docker node ps        查看一个或多个节点中的 Task 任务(默认查看当前节点)
docker node inspect      查看一个或多个节点的详细信息
docker node promote     节点升级,由工作节点升级为管理节点
docker node demote      节点降级,由管理节点降级为工作节点
docker node update      更新一个节点
docker node rm         删除一个或多个节点(-f强制删除)

部署服务

# 使用replicas参数来指定副本数
docker service create --name redis --replicas=2 redis:3.0.6

查看服务列表:

$ docker service ls
ID            NAME    MODE        REPLICAS  IMAGE
dmu1ept4cxcf  redis   replicated  2/2       redis:3.0.6

查看指定服务的任务列表:

$ docker service ps redis
ID             NAME      IMAGE        NODE      DESIRED STATE  CURRENT STATE          ERROR  PORTS
0qihejybwf1x   redis.1   redis:3.0.6  manager1  Running        Running 8 seconds
bk658fpbex0d   redis.2   redis:3.0.6  worker2   Running        Running 9 seconds

查看指定服务的详细信息:

$ docker service inspect --pretty redis
ID:     dmu1ept4cxcfe8k8lhtux3ro3
Name:   redis
Labels:

Service Mode:   REPLICATED
 Replicas:      2
Placement:
UpdateConfig:
 Parallelism:   0
 On failure:    pause
 Max failure ratio: 0
ContainerSpec:
 Image:     redis:3.0.6
Resources:
Networks:   net1
Endpoint Mode:  vip
Ports:
 PublishedPort = 4443
  Protocol = tcp
  TargetPort = 443
  PublishMode = ingress

查看日志:

docker service logs -f --tail=n redis

服务扩容与缩容:

docker service scale redis=3

滚动升级服务:

# 创建时使用--update-deplay参数类设置每个task之间的更新延迟
docker service create --name redis --replicas 3 --update-delay 10s redis:3.0.6
# 升级redis服务的镜像版本
docker service update --image redis:3.0.7 redis

删除服务:

docker service rm redis

docker service常用命令:

命令             说明
docker service create      部署服务
docker service ls        查看服务列表
docker service ps        列出一个或多个服务的任务列表
docker service inspect     查看一个或多个服务的详细信息
docker service logs       查看一个服务或任务的日志
docker service scale      设置服务的任务数量
docker service update      更新一个服务
docker service rollback     回滚一个服务到以前的版本
docker service rm        删除一个或多个服务(-f强制删除)

参考

Use the Docker command line | Docker Docs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1053078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

唤醒手腕 Matlab 游戏编程常用技术知识点详细教程(更新中)

Figure 窗口初始化 figure 使用默认属性值创建一个新的图窗窗口。生成的图窗为当前图窗。f figure(___) 返回 Figure 对象。可使用 f 在创建图窗后查询或修改其属性。figure(f) 将 f 指定的图窗作为当前图窗,并将其显示在其他所有图窗的上面。 figure(n) 查找 Nu…

8、Docker-compose容器编排

一、Docker compose 是什么 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同…

cadence SPB17.4 S032 - 使用room来放置元件

文章目录 cadence SPB17.4 S032 - 使用room来放置元件概述笔记在orcad中设置子原理图的ROOM号码在空的Allegro工程中, 放入板框在allegro中建立room备注补充 - ROOM还得留着END cadence SPB17.4 S032 - 使用room来放置元件 概述 如果在allegro中直接手工或自动放置元件, 放好…

scala基础入门

一、Scala安装 下载网址:Install | The Scala Programming Language ideal安装 (1)下载安装Scala plugins (2)统一JDK环境,统一为8 (3)加载Scala (4)创建工…

单调队列 - 滑动窗口

154. 滑动窗口 - AcWing题库 O(1)求窗口中的最大值/最小值 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std;typedef pair<int, int> PII; typedef long long ll; typedef long double l…

gdb的使用

目录 gdb工具的使用 代码调试相关指令 运行程序指令 r 显示代码的指令 l 给代码打断点 b 查看断点位置 info b 执行代码到断点处停止 关闭断点 d断点编号 关闭某个断点&#xff0c;但不删除 disable编号 打开某个断点 enable断点编号 逐过程调试代码 n 逐语句调试代码 s 查看…

【外设】拓展坞接入外设一直弹窗报错问题

外设相关&#xff1a;多功能拓展坞安装后使用正常但计算机一直弹窗报错 1.基本配置信息&#xff1a; 拓展坞&#xff1a;绿联6合1 笔记本&#xff1a;lenovo &#xff08;硬件:13^i5;系统&#xff1a;win11&#xff09; 外设&#xff1a;1键1鼠1显示器1硬盘 2.存在的问题&am…

LNK2001: unresolved external symbol __imp___std_init_once_begin_initialize 问题解决

LNK2001: unresolved external symbol __imp___std_init_once_begin_initialize 解决 文章目录 问题背景方法一&#xff1a;使用预编译指令方法二&#xff1a;使用相同的环境 参考链接附录 问题背景 Visual Studio 2019 对 CMakeLists.txt 的支持不是很好&#xff0c;使用 “文…

【单片机】12-串口通信和RS485

1.通信有关的常见概念 区分&#xff1a;串口&#xff0c;COM口&#xff0c;UART&#xff0c;USART_usart和串口区别-CSDN博客 串口、COM口、UART口, TTL、RS-232、RS-485区别详解-CSDN博客 1.什么是通信 &#xff08;1&#xff09;人和人之间的通信&#xff1a;说话&#xff…

java项目之校园餐厅管理(ssm源码+文档)

项目简介 校园餐厅管理实现了以下功能&#xff1a; 管理员&#xff1a;个人中心、商家管理、用户管理、菜系类别管理、校园美食管理、在线下单管理、美食论坛、系统管理。商家前台&#xff1a;首页、校园美食、论坛信息、新闻资讯、我的、跳转到后台、客服。商家&#xff1a;…

第4讲:vue内置命令(文本插值,属性绑定,v-text,v-html)

MVVM 什么是MVVM&#xff1f; MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化&#xff0c;让我们将视图 UI 和业务逻辑分开。 View层&#xff1a; 视图层 在我们前端开发中&#xff0c;通常就是 DOM 层。 主要的作用是…

Error: Activity class {xxx.java} does not exist

git切换到不同的branch之后&#xff0c;报下面的错误&#xff1a; Error: Activity class {xxx.java} does not exist 解决方案&#xff1a; 首先clean 然后会删除build目录 然后点击&#xff1a;Invalidate Caches Android Studio重启&#xff0c;然后重新build即可。

四、2023.9.30.C++面向对象end.4

文章目录 49、 简述一下什么是常函数&#xff0c;有什么作用&#xff1f;50、 说说什么是虚继承&#xff0c;解决什么问题&#xff0c;如何实现&#xff1f;51、简述一下虚函数和纯虚函数&#xff0c;以及实现原理&#xff1f;52、说说纯虚函数能实例化吗&#xff0c;为什么&am…

Python实验二

1&#xff1a;编程计算 1&#xff5e;100 偶数的和。 要求&#xff1a;输出结果为整数&#xff0c;宽度为 8&#xff0c;居中对齐&#xff0c;空白处填充符号“*”。 提示&#xff1a; range(2,101,2)生成的整数列表从 2 开始到 100 结束&#xff0c;步长为 2&#xff0c;即 …

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Linux管理面板mdserver-web

华为云云耀云服务器L实例评测&#xff5c;云耀云服务器L实例部署Linux管理面板mdserver-webl 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、mdserver-web介绍2.1 mdserver-web简介2.2 mdserver-web特点2.3 主要插件介绍 三、本次实践介绍…

高数:第二章:一元函数微分学

文章目录 一、导数与微分1.导数的概念(1)导数的定义(2)左右导数(3)定理&#xff1a;可导与左右导数的关系(4)可导三要素(5)用导数定义判断可导性 2.微分的概念(1)微分的定义(2)微分与可导的关系 3.导数与微分的几何意义(1)导数 f ′ ( x 0 ) f(x_0) f′(x0​)的几何意义&#x…

【LLM】Windows10环境部署阿里通义千问大模型(Qwen-14B-Chat-Int4)

文章目录 环境文件准备项目代码模型相关文件 运行准备工作运行demo Tips 环境 系统版本&#xff1a;Windows 10 企业版 版本号&#xff1a;20H2 系统类型&#xff1a;64 位操作系统, 基于 x64 的处理器 处理器&#xff1a;Intel Core™ i7-13700K CPU 3.40GHz 机带 RAM&#…

1340. 跳跃游戏 V;2039. 网络空闲的时刻;2767. 将字符串分割为最少的美丽子字符串

1340. 跳跃游戏 V 核心思想&#xff1a;动态规划记忆化搜索。定义dfs(i)&#xff0c;表示从i开始最多可以访问多少个下标&#xff0c;然后统计往左跳和往右边跳的最大值&#xff0c;思路其实比较简单&#xff0c;但是代码我感觉还是不太好想。 2039. 网络空闲的时刻 核心思想…

CH347读写SPI Flash

CH347读写SPI Flash 前面耽搁了几天&#xff0c;今天终于把CH347 SPI接口调试好了。 CH347动态库中SPI接口函数如下&#xff1a; typedef struct _SPI_CONFIG{UCHAR iMode; // 0-3:SPI Mode0/1/2/3UCHAR iClock; // 060…

数据分析方法:RFM模型

一、RFM基本原理 RFM是三个单词的缩写&#xff1a; 最近一次消费时间&#xff08;Recency&#xff09;&#xff0c;取数的时候一般取最近一次消费记录到当前时间的间隔&#xff0c;比如&#xff1a;7天、30天、90天未到店消费&#xff1b;直观上&#xff0c;一个用户太久不到…