【云原生 | 55】Docker三剑客之Docker Swarm简介和安装

news2024/11/12 12:19:38

🍁博主简介
        🏅云计算领域优质创作者
        🏅2022年CSDN新星计划python赛道第一名

        🏅2022年CSDN原力计划优质作者
        🏅阿里云ACE认证高级工程师
        🏅阿里云开发者社区专家博主

💊交流社区:CSDN云计算交流社区欢迎您的加入!

目录

1、简介 

2、安装Swarm

2.1、下载镜像 

2.2、配置节点 

2.3、启动集群 

 👑👑👑结束语👑👑👑​


Docker Swarm是Docker官方的三剑客项目之一,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案。使用 它,用户可以将多个Docker主机封装为单个大型的虚拟Docker主机,快速打造一套容器云平台。

1、简介 

Docker Swarm是Docker公司推出的官方容器集群平台,基于Go语言实现,代码开源在 https://github.com/docker/swarm 。目前,包括Rackspace在内的许多平台都采用了Swarm,用户也很容易在AWS等公有云平台使用Swarm。

Swarm的前身是Beam项目和libswarm项目,首个正式版本(Swarm V1)在2014年12月初发布。为了提高可扩展性,2016年2月对架构进行重新设计,推出了V2版本,支持超过1千个节点。最新的Docker Engine已经集成了Swarm Kit,加强了对Swarm的协作支持。
作为容器集群管理器,Swarm最大的优势之一就是100%支持标准的Docker API。各种基于标准API的工具,如Compose、docker-py,各种管理软件,甚至Docker本身等都可以很容易地与Swarm进行集成。这大大方便了用户将原先基于单节点的系统移植到Swarm上。同时Swarm内置了对Docker网络插件的支持,用户可以很容易地部署跨主机的容器集群服务。

Swarm V1的结构图如下图所示。可以看出,Swarm是典型的master-slave结构,通过发现服务来选举manager。manager是中心管理节点,各个node上运行agent接受manager的统一管理。

在V2中,集群会自动通过Raft协议分布式选举出manager节点,无需额外的发现服务支持,避免了单点瓶颈。同时,V2中内置了基于DNS的负载均衡和对外部负载均衡机制的集成支持。 

2、安装Swarm

安装Swarm有几种方式,可以基于Docker Machine进行安装,也可以手动配置。为了能更容易理解Swarm的组件和更灵活地进行管理,推荐使用手动配置方式。

对于Docker 1.12+版本,Swarm相关命令已经原生嵌入到了Docker Engine中,对于较低版本的Docker,需要额外进行配置

2.1、下载镜像 

Docker官方已经提供了Swarm镜像,需要在所有被Swarm管理的Docker主机上下载该镜像:
$ docker pull swarm

可以使用下面的命令来查看Swarm版本,验证是否成功下载Swarm镜像

$ docker run --rm swarm -v
swarm version 1.2.2 (34e3da3)

2.2、配置节点 

Docker主机在加入Swarm集群前,需要进行一些简单配置,添加Docker daemon的网络监听。例如,在启动Docker daemon的时候通过-H参数:
$ sudo docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

注意:

Docker 1.8.0前的版本不支持daemon命令,可以用-d代替。如果是通过服务方式启动,则需要修改服务的配置文件。
以Ubuntu 14.04为例,配置文件为/etc/default/docker(其他版本的Linux上略有不同)。在文件的最后添加:
DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"

2.3、启动集群 

Docker集群管理需要使用服务发现(Service Discover)功能,Swarm支持以下几种方式:Docker Hub、本地文件、Etcd、Consul、Zookeeper和手动指定节点IP地址信息等。
除了手动指定外,这些方法原理上都是通过维护一套数据库机制来管理集群中注册节点的Docker Daemon的访问信息。
本地配置集群推荐使用Consul作为服务发现后端。利用社区提供的Docker镜像,整个过程只需要三步即可完成

启动Consul服务后端 

启动Consul服务容器,映射到主机的8500端口:

$ docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap

获取到本地主机的地址作为consul的服务地址:<consul_ip>:8500。

启动管理节点 

首先启动一个主管理节点,映射到主机的4000端口,并获取所在主机地址为<manager0_ip>。其中4000端口是Swarm管理器的默认监听端口,用户也可以指定映射为其他端口:
$ docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise
<manager0_ip>:4000 consul://<cons
为了提高可用性,也可以启动从管理节点。假定获取所在主机地址为:
$ docker run -d swarm manage -H :4000 --replication --advertise <manager1_ip>:
4000 consul://<consul_ip>:8500

启动工作节点 

需要在每个工作节点上启动agent服务。获取节点的主机地址为<node_ip>,并指定前面获取到的consul服务地址:
$ docker run -d swarm join --advertise=<node_ip>:2375 consul://<consul_ip>:8500
节点启动后,用户可以指定Docker服务地址为<manager0_ip>:4000>来测试各种Docker命令,可以看到整个Swarm集群就像一个虚拟的Docker主机一样正常工作。
由于Swarm实际上是通过agent调用了本地的Docker daemon来运行容 器,当Swarm集群服务出现故障时,无法接受新的请求,但已经运行起来的容器将不会受到影响。

 👑👑👑结束语👑👑👑

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

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

相关文章

chatgpt赋能python:Python如何获取激光雷达数据

Python如何获取激光雷达数据 激光雷达数据在机器学习和自动驾驶领域中扮演着重要的角色。Python作为一种功能强大而又易于学习的编程语言&#xff0c;在获取激光雷达数据方面也表现出极高的效率和灵活性。下面我们将介绍如何使用Python获取激光雷达数据。 什么是激光雷达数据…

vue-li问题记录

Starting development server... ERROR ValidationError: webpack Dev Server Invalid Options options should NOT have additional properties options should NOT have additional properties 大概是package.json或者是vue.config.js文件出现类问题&#xff0c;我把这两…

chatgpt赋能python:Python计算BMI-一篇完整的指南

Python 计算BMI - 一篇完整的指南 我们都知道&#xff0c;BMI是身体质量指数的简称&#xff0c;它是以身高和体重计算的一个数值&#xff0c;用来评估一个人的身体状况。在本文中&#xff0c;我们将介绍如何使用Python计算BMI&#xff0c;并提供一些关于BMI的背景知识。 什么…

[Selenium] 通过Java+Selenium查询某个博主的Top100文章质量分

系列文章目录 通过JavaSelenium查询文章质量分 通过JavaSelenium查询某个博主的Top40文章质量分 通过JavaSelenium查询某个博主的Top100文章质量分 文章目录 系列文章目录前言一、环境准备二、查询某个博主的Top100文章2.1、修改pom.xml配置2.2、配置Chrome驱动2.3、引入浏览器…

数据结构C语言版本(下)

第七章 图 第一节 图的定义 一、逻辑结构 1、逻辑结构 ①定义&#xff1a;G(V,E)。V是顶点集&#xff0c;E是顶点间二元关系的集合。 &#xff08;内涵越小&#xff0c;外延越大&#xff09; ②与树的区别&#xff1a; ①树有特殊的根结点&#xff1b; ②树的结点和关系能分成…

津津乐道设计模式 - 桥接模式详解

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

选择C#还是Qt作为上位机开发工具:如何做出最佳决策?

选择C#还是Qt作为上位机开发工具取决于你的具体需求和偏好。以下是一些优化因素供你考虑&#xff1a;跨平台支持&#xff1a;如果你的应用程序需要在多个操作系统上运行&#xff0c;Qt可能是更好的选择&#xff0c;因为它具有强大的跨平台能力。Qt可以帮助你开发具备一致性和可…

演讲实录丨神策数据桑文锋:双引擎赋能数字化客户经营

在「开放融合&#xff0c;引领营销 5.0 新纪元——暨 2023 年金融营销科技价值发现论坛」现场&#xff0c;神策数据创始人 & CEO 桑文锋发表了《双引擎赋能数字化客户经营》的主题演讲&#xff0c;围绕“用户/客户数据平台”和“旅程编排引擎”双引擎做了详细介绍。 本文根…

SpringBoot项目-双人对战五子棋实验报告

简单五子棋Web项目报告 课 程 Web应用程序设计 项目名称 简单双人五子棋对战 成绩 专业班级 XXX 组别 无 学号 XXX 指导教师 XXX 姓 名 XXX 同组人姓名 无 完成日期 XXX 功能描述 1.用户的注册及登录功能 玩家可以在完成游戏账户的注册&#xff0c…

uni-app 数字输入框组件封装

文章目录 前言一、创建数字输入框文件二、制作数字输入框组件三、父组件调用 前言 数字输入框是一个项目中常见的需求&#xff0c;其中的耦合度很高&#xff0c;完全可以将其封装起来使用&#xff0c;在使用的时候传入五个参数&#xff0c;分别为&#xff1a; 最大值最小值默…

RUST 运行是报 linker `link.exe` not found

如下图所示&#xff1a; 解决方法&#xff1a; 第一步&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu 第二步&#xff1a; rustup default stable-x86_64-pc-windows-gnu 验证&#xff1a;

关于全局异常提示

项目中客户端请求如果后端出现技术上的bug&#xff0c;会报出网络异常&#xff0c;这对客户是很不友好的&#xff0c;比方说请求参数格式校验&#xff0c;如下&#xff1a; import com.fasterxml.jackson.annotation.JsonFormat; 假如日期格式传的不对&#xff0c;这个注解校验…

I3C协议手册研读-1

0 前言 对于I3C&#xff0c;我觉得有必要仔细分析一下手册&#xff0c;通过博客的方式来进行&#xff0c;可以更好的督促自己进行学习。 本次研读的I3C手册版本如下图所示。 1 介绍 阿兴分析如下&#xff1a; 目前比较成熟的协议有I2C、SPI、USART等&#xff0c;但是因为有一…

网络安全合规-ISO 27701(二)

隐私信息安全管理体系&#xff08;PIMS&#xff09;认证 是在隐私保护方面对 ISO/IEC 27001 和ISO/IEC 27002 的扩展&#xff0c;针对保护可能受到个人信息收集和处理影响的隐私提供了更多相关指南。获得PIMS认证的企业标志着其在保护用户数据和个人信息安全方面符合国际标准IS…

怎么学习和提升后端开发能力? - 易智编译EaseEditing

学习和提升后端开发能力可以通过以下步骤进行&#xff1a; 学习编程语言&#xff1a; 选择一种常用的后端编程语言&#xff0c;如Python、Java、C#等&#xff0c;并深入学习该语言的语法、特性和最佳实践。掌握基本的编程概念和技巧是提升后端开发能力的基础。 学习数据库&am…

微信小程序:期末大作业,毕业设计茶客堂商城微信小程序

1. 项目简介 茶客堂微信小程序是一个为茶叶爱好者提供优质茶叶和茶文化知识的平台。茶作为中国的传统文化&#xff0c;越来越受到各个年龄层的人们的喜爱。而传统的茶叶销售方式有一定的局限性&#xff0c;如茶叶品质无法保证、价格不透明等。茶客堂微信小程序应运而生&#x…

【软考网络管理员】2023年软考网管初级常见知识考点(23)- 路由器的配置

涉及知识点 华为路由器的配置&#xff0c;华为路由器命令大全&#xff0c;软考大纲路由命令&#xff0c;静态路由和动态路由的配置命令&#xff0c;软考网络管理员常考知识点&#xff0c;软考网络管理员网络安全&#xff0c;网络管理员考点汇总。 原创于&#xff1a;CSDN博主-…

GPT快速分区

经过刚刚的“转换分区表类型为GUID格式”设置之后&#xff0c;现在分区的分区表类型已经是GPT格式了。我们设置想要分区的数目&#xff0c;例如我想要分两个区&#xff0c;点击自定选择2个分区&#xff0c;系统C盘分了80G&#xff0c;剩下空间留给了D盘。默认勾选“创建新ESP分…

jenkins流水线Pipeline的使用

pipeline流水线 1、jenkins安装pipeline插件 2、创建流水线项目 1、创建pipeline的流水线项目 2、编写流水线 pipeline {agent anystages {stage(拉去代码) {steps {git credentialsId: gitee, url: https://gitee.com/xwb1056481167/jenkins-demo.gitecho 拉去代码}}stage(m…

C. Tenzing and Balls(dp)

Problem - C - Codeforces Tenzing在一条线上排列了n个球。从左边起第i个球的颜色是ai。 Tenzing可以进行以下操作任意次&#xff1a; 选择i和j&#xff0c;使得1≤i<j≤|a|且aiaj&#xff0c; 从数组中删除ai,ai1,…,aj&#xff08;并将所有元素的索引向右移动aj−i1&…