Docker Swarm
Docker Swarm提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。
Swarm mode内置 kv 存储功能,提供了众多的新特性,比如:具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网格、动态伸缩、滚动更新、安全传输等。使得 Docker原生的Swarm集群具备与Mesos、 Kubernetes 竞争的实力。
基本概念
Swarm 是使用SwarmKit构建的Docker引擎内置(原生)的集群管理和编排工具。
节点
运行Docker的主机可以主动初始化一个Swarm集群或者加入一个已存在的 Swarm 集群,这样这个运行Docker的主机就成为一个Swarm集群的节点 ( node ) 。节点分为管理节点和工作节点。
- 管理节点用于Swarm集群的管理,docker swarm 命令基本只能在管理节点执行(节点退出集群命令 docker swarm leave 可以在工作节点执行) 。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader ,leader通过raft协议实现。
- 工作节点是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。管理节点默认也作为工作节点。可以通过配置让服务只运行在管理节点。
任务
任务(Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。
服务
服务 ( Services ) 是指一组任务的集合, 服务定义了任务的属性。服务有两种模式,两种模式通过 docker service create 的 --mode 参数指定。
- replicated services 按照一定规则在各个工作节点上运行指定个数的任务。
- global services 每个工作节点上运行一个任务。
服务和任务的关系如下图所示
创建Swarm集群
初始化集群
使用docker swarm init命令。如果Docker主机有多个网卡,拥有多个IP,必须使用--advertise-addr指定IP。执行docker swarm init命令的节点自动成为管理节点。
$ docker swarm init --advertise-addr 192.168.222.128
Swarm initialized: current node (ni1omlgyo0vw1h8e93e124srk) is now a manager.To add a worker to this swarm, run the following command:docker swarm join \--token SWMTKN-1-47jtzmzdyej3ey59gsgckk54gbt0cqe28gjvh9gg4j6uweccst-eugtpcgbm34370ljz1bvre6jy \192.168.222.128:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
增加工作节点
使用docker swarm join命令加入到集群中。使用docker node ls查看集群。
# 加入集群
$ docker swarm join \--token SWMTKN-1-2dqppg075l4xoozwsp8hts1v1ro750fhiawa28y8u9fpo0t0tf-74c7t1eglegf0h1z7jr6g6rjj \192.168.222.128:2377# 查看集群
$ docker node ls# 将worker节点提升为manager节点,在manager节点执行如下命令:
docker node promote 节点名称|节点ID# 将manager节点降低为worker节点,在manager节点执行如下命令:
docker node demote 节点名称|节点ID# 在要脱离集群的节点上使用以下命令, 主动离开集群,让节点处于down状态,才能删除
docker swarm leave# 节点脱离集群后,才能删除节点,删除节点使用如下命令
docker node rm 节点名称|节点ID# 强制删除集群
$ docker swarm leave --force
部署服务
使用docker service命令来管理Swarm集群中的服务,该命令只能在管理节点运行。
# 创建服务
docker service create --replicas 3 -p 3306:3306 --name db -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=sql_test \-e MYSQL_USER=myuser -e MYSQL_PASSWORD=userpassword mysql # 查看服务
docker service ls 查看当前Swarm集群运行的服务
docker service ps db 查看容器状态
docker service logs db 查看服务日志
docker service inspect nginx 查看服务的详细信息# 删除服务
docker service rm db# 更新服务
docker service update --image nginx:alpine nginx# 减少服务实例(这比直接删除服务要好)
docker service scale nginx=0# 增加服务实例
docker service scale nginx=5
使用docker stack命令在集群中部署多个服务,docker stack文件内容和docker compose文件类似。
- 其中image关键字是服务对象中唯一的必填项,docker stack和docker compose的区别是docker stack不支持构建,所有的镜像必须提前构建完成。
- 在Docker Swarm中,虽然 --link 功能已被弃用,但可以通过使用服务发现机制来模拟 link 效果。给不同的服务指定相同的Overlay网络,就可以通过服务名实现互相访问。服务发现机制是自动的,无需手动配置。它使用DNS来解析容器名称,并在整个Overlay网络中实现容器之间的连接。例如下面的例子中,在bms服务中就可以通过bookmanage_db连接数据库。
# 部署服务命令
docker stack deploy -c docker-compose.yml boomanage# 删除服务命令
docker stack rm boomanage# 查看容器状态
docker stack ps boomanage
yml文件内容如下:
version: "3"
services:db:image: mysqlnetworks:- overlayports:- "3306:3306"environment:MYSQL_ROOT_PASSWORD: passwordMYSQL_DATABASE: sql_testMYSQL_USER: myuserMYSQL_PASSWORD: userpasswordvolumes:- /home/gowork/src/composebms/db/data:/var/lib/mysqldeploy:placement:constraints: [node.role == manager]bms:image: ubuntu:bmscommand: bookmangernetworks:- overlayports:- "8999:8999"deploy:mode: replicatedreplicas: 3networks:overlay:
相关文章:

Docker Swarm
Docker Swarm提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。 Swarm mode内置 kv 存储功能,提供了众多的新特性,比如&a…...
jupyter notebook安装和删除kernel的解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
中级深入--day16
爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider) 之间恢宏壮阔的斗争... Day 1 小黄想要某站上所有的电影,写了标准的爬虫(基于HttpClient库),不断地遍历某站的电影列表页面,根据 Html 分析电影名字存进…...
【洛谷 P1031】[NOIP2002 提高组] 均分纸牌 题解(贪心)
[NOIP2002 提高组] 均分纸牌 题目描述 有 N N N 堆纸牌,编号分别为 1 , 2 , … , N 1,2,\ldots,N 1,2,…,N。每堆上有若干张,但纸牌总数必为 N N N 的倍数。可以在任一堆上取若干张纸牌,然后移动。 移牌规则为:在编号为 1 …...

E5071C是德科技网络分析仪
描述 E5071C网络分析仪提供同类产品中最高的RF性能和最快的速度,具有宽频率范围和多功能。E5071C是制造和R&D工程师评估频率范围高达20 GHz的RF元件和电路的理想解决方案。特点: 宽动态范围:测试端口的动态范围> 123 dB(典型值)快速测量速度:41毫秒全2端口…...

ViTPose+:迈向通用身体姿态估计的视觉Transformer基础模型 | 京东探索研究院
身体姿态估计旨在识别出给定图像中人或者动物实例身体的关键点,除了典型的身体骨骼关键点,还可以包括手、脚、脸部等关键点,是计算机视觉领域的基本任务之一。目前,视觉transformer已经在识别、检测、分割等多个视觉任务上展现出来…...

Android 播放mp3文件
1,在res/raw中加入mp3文件 2,实现播放类 import android.content.Context; import android.media.AudioManager; import android.media.SoundPool; import android.util.Log;import java.util.HashMap; import java.util.Map;public class UtilSound {pu…...

在OpenStack私有云上安装配置虚拟机
文章目录 零、学习目标一、登录大数据实训云二、创建网络三、创建路由四、添加接口五、创建端口六、添加安全组规则七、创建实例(一)实例规划(二)创建实例 - ied(三)创建实例 - master、slave1与slave2&…...

pyCharm远程DEBUG
第一步,添加一个远程机器的解释器 ssh 远程机器解释器添加, 我本地ssh有配置目标机器。 如果没配置,那就选着new server configuration 新增一个。 interpreter 指定远程机器python, (机器上有多个版本python里尤其要…...
微服务框架Go-kit
微服务框架Go-kit go kit简介第一个go kit应用go kit基本概念go kit Endpointsgo kit Endpoint 定义go kit Endpoint 函数签名go kit Endpoint 链式操作go kit Endpoint 请求和响应转换go kit Endpoint 中间件go kit Endpoint 错误处理go kit 传输层go kit HTTP 传输层go kit …...

《王道24数据结构》课后应用题——第三章 栈和队列
第三章 【3.1】 03、 假设以I和O分别表示入栈和出操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,可以操作的序列称为合法序列,否则称为非法序列。 如IOIIOIOO 和IIIOOIOO是合法的,而IOOIOIIO和II…...

查看linux开发板的CPU频率
1)查看CPU可设置的频率列表 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 2)查看CPU当前所使用的频率: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 3)设置CPU频率(最高…...

对象模型和this指针(个人学习笔记黑马学习)
1、成员变量和成员函数 #include <iostream> using namespace std; #include <string>//成员变量和成员函数分开存储class Person {int m_A;//非静态成员变量 属于类的对象上的static int m_B;//静态成员变量 不属于类的对象上void func() {} //非静态成员函数 不…...

SpringCloudAlibaba常用组件
SpringCloudAlibaba常用组件 微服务概念 1.1 单体、分布式、集群 单体 ⼀个系统业务量很⼩的时候所有的代码都放在⼀个项⽬中就好了,然后这个项⽬部署在⼀台服务器上就 好了。整个项⽬所有的服务都由这台服务器提供。这就是单机结构。 单体应⽤开发简单,部署测试…...

Shotcut for Mac:一款强大而易于使用的视频编辑器
随着数码相机的普及,视频编辑已成为我们日常生活的一部分。对于许多专业和非专业用户来说,找到一个易于使用且功能强大的视频编辑器是至关重要的。今天,我们将向您介绍Shotcut——一款专为Mac用户设计的强大视频编辑器。 什么是Shotcut&…...

【数学建模】2023数学建模国赛C题完整思路和代码解析
C题第一问代码和求解结果已完成,第一问数据量有点大,经过编程整理出来了单品销售额的汇总数据、将附件2中的单品编码替换为分类编码,整理出了蔬菜各品类随着时间变化的销售量,并做出了这些疏菜品类的皮尔森相关系数的热力图&#…...

论数据库的种类
摘要 数据库是现代信息管理和数据存储的重要工具,几乎在各个领域都有广泛应用。不同类型的数据库适用于不同的应用场景和需求。本文将介绍几种常见的数据库种类,并探讨它们的特点和适用范围。 正文 一、关系型数据库(RDBMS) 关…...

docker笔记4:高级复杂安装-mysql主从复制
1.主从搭建步骤 1.1新建主服务器容器实例3307 docker run -p 3307:3306 --name mysql-master \ -v /mydata/mysql-master/log:/var/log/mysql \ -v /mydata/mysql-master/data:/var/lib/mysql \ -v /mydata/mysql-master/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORDroot \ -d…...

MySQL卸载干净再重新安装【Windows】
家人们,谁懂啊? 上学期学的数据库,由于上学期不知道为什么抽风,过得十分的迷,上课跟老师步骤安装好了Mysql,但后面在使用的过程中出现了问题,而且还出现了忘记密码这么蠢的操作,后半…...

在VScode中如何将界面语言设置为中文
VSCode安装后的默认界面是只有英文的,如果想用中文界面,那么就需要安装对应的插件,vscode插件可以从扩展中心去搜索并安装。 安装vscode后打开vscode,点击左侧的扩展按钮。 在搜索框中输入chinese,弹出chinese&#x…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...