云计算介绍

1.1  SaaS

SaaS 是 Software-as-a-Service(软件即服务)
1.2  PaaS
        PaaS 是 Platform-as-a-Service 的缩写,意思是平台即服务。 把服务器平台作为一种服务提供的 商业模式。通过网络进行程序提供的服务称之为 SaaS(Software as a Service),而云计算时代相 应的服务器平台或者开发环境作为服务进行提供就成为了 PaaS(Platform as a Service)。
1.3  IaaS

        IaaS(Infrastructure as a Service),即基础设施即服务。提供给消费者的服务是对所有设施的 利用,包括处理、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作 系统和应用程序。

1.4 Docker

1.4.1 概念

Docker 的出现一定是因为目前的后端在开发和运维阶段确实需要一种虚拟化技术解决开发环境和
生产环境环境一致的问题,通过 Docker 我们可以将程序运行的环境也纳入到版本控制中,排除因
为环境造成不同运行结果的可能。但是上述需求虽然推动了虚拟化技术的产生,但是如果没有合
适的底层技术支撑,那么我们仍然得不到一个完美的产品。本文剩下的内容会介绍几种 Docker 使
用的核心技术,如果我们了解它们的使用方法和原理,就能清楚 Docker 的实现原理。Docker 使
用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。Docker 容器通过
Docker 镜像来创建。
 

 1.4.2 Namespaces

命名空间(namespaces)是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间
通信等资源的方法 。在日常使用 Linux 或者 macOS 时,我们并没有运行多个完全分离的服务器的
需要,但是如果我们在服务器上启动了多个服务,这些服务其实会相互影响的,每一个服务都能
看到其他服务的进程,也可以访问宿主机器上的任意文件,这是很多时候我们都不愿意看到的,
我们更希望运行在同一台机器上的不同服务能做到完全隔离,就像运行在多台不同的机器上一样。
Linux 的命名空间机制提供了以下七种不同的命名空间,包括 CLONE_NEWCGROUP、
CLONE_NEWIPC、CLONE_NEWNET、CLONE_NEWNS、CLONE_NEWPID、
CLONE_NEWUSER 和 CLONE_NEWUTS ,通过这七个选项我们能在创建新的进程时设置新进程应该在哪些资源上与宿主机器进行隔离。
1.4.3  进程 ( CLONE_NEWPID 实现的进程隔离 )
docker 创建新进程时传入 CLONE_NEWPID 实现的进程隔离 ,也就是使用 Linux 的命名空间实现
进程的隔离,Docker 容器内部的任意进程都对宿主机器的进程一无所知。 当我们每次运行
docker run 或者 docker start 时,都会在创建一个用于设置进程间隔离的 Spec ,同时会设置进
程相关的命名空间,还会设置与用户、网络、IPC 以及 UTS 相关的命名空间, 所有命名空间相关
的设置 Spec 最后都会作为 Create 函数的入参在创建新的容器时进行设置 。
1.4.4 Libnetwork 与网络隔离
如果 Docker 的容器通过 Linux 的命名空间完成了与宿主机进程的网络隔离,但是却有没有办法通过宿 主机的网络与整个互联网相连,就会产生很多限制,所以 Docker 虽然可以通过命名空间创建一个隔离 的网络环境,但是 Docker 中的服务仍然需要与外界相连才能发挥作用。
Docker 整个网络部分的功能都是通过 Docker 拆分出来的 libnetwork 实现的 ,它提供了一个连接不同 容器的实现,同时也能够为应用给出一个能够提供一致的编程接口和网络层抽象的容器网络模型。
libnetwork 中最重要的概念,容器网络模型由以下的几个主要组件组成,分别是 Sandbox、
Endpoint 和 Network。在容器网络模型中,每一个容器内部都包含一个 Sandbox,其中存储着当前 容器的网络栈配置,包括容器的接口、路由表和 DNS 设置, Linux 使用网络命名空间实现这个
Sandbox,每一个 Sandbox 中都可能会有一个或多个 Endpoint,在 Linux 上就是一个虚拟的网卡
veth,Sandbox 通过 Endpoint 加入到对应的网络中,这里的网络可能就是我们在上面提到的 Linux 网桥或者 VLAN。
每一个使用 docker run 启动的容器其实都具有单独的网络命名空间,Docker 为我们提供了四种不同 的网络模式, Host、Container、None 和 Bridge 模式 。

在这一部分,我们将介绍 Docker 默认的网络设置模式:网桥模式。在这种模式下,除了分配隔离的网 络命名空间之外,Docker 还会为所有的容器设置 IP 地址。当 Docker 服务器在主机上启动之后会创建 新的虚拟网桥 docker0,随后在该主机上启动的全部服务在默认情况下都与该网桥相连。在默认情况下,每一个容器在创建时都会创建一对虚拟网卡,两个虚拟网卡组成了数据的通道,其中一个会放在创建的容器中,会加入到名为 docker0 网桥中。
1.4.5  资源隔离与 CGroups
Control Groups(简称 CGroups)能够隔离宿主机器上的物理资源,例如 CPU、内存、磁盘 I/O 和网 络带宽。每一个 CGroup 都是一组被相同的标准和参数限制的进程,不同的 CGroup 之间是有层级关 系的,也就是说它们之间可以从父类继承一些用于限制资源使用的标准和参数。
1.4.6. 镜像与 UnionFS
Linux 的命名空间和控制组分别解决了不同资源隔离的问题,前者解决了进程、网络以及文件系统
的隔离,后者实现了 CPU、内存等资源的隔离 ,但是在 Docker 中还有另一个非常重要的问题需
要解决 - 也就是镜像。
Docker 镜像其实本质就是一个压缩包,我们可以使用命令将一个 Docker 镜像中的文件导出,你
可以看到这个 镜像中的目录结构与 Linux 操作系统的根目录中的内容并没有太多的区别,可以说
Docker 镜像就是一个文件。
1.4.7. 存储驱动
        Docker 使用了一系列不同的存储驱动管理镜像内的文件系统并运行容器, 这些存储驱动与
Docker 卷(volume)有些不同,存储引擎管理着能够在多个容器之间共享的存储 。
当镜像被 docker run 命令创建时就会在镜像的最上层添加一个可写的层,也就是容器层,所有对
于运行时容器的修改其实都是对这个容器读写层的修改。
容器和镜像的区别就在于,所有的镜像都是只读的,而每一个容器其实等于镜像加上一个可读写
的层 ,也就是同一个镜像可以对应多个容器
        UnionFS 其实是一种为 Linux 操作系统设计的用于把多个文件系统『联合』到同一个挂载点的文 件系统服务。而 AUFS 即 Advanced UnionFS 其实就是 UnionFS 的升级版,它能够提供更优秀 的性能和效率。
        AUFS 只是 Docker 使用的存储驱动的一种,除了 AUFS 之外,Docker 还支持了不同的存储驱动, 包括 aufs、devicemapper、overlay2、zfs 和 vfs 等等,在最新的 Docker 中,overlay2 取代了 aufs 成为了推荐的存储驱动,但是在没有 overlay2 驱动的机器上仍然会使用 aufs 作为 Docker的默认驱动。

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

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

相关文章

2023年海南省职业院校技能大赛(高职组)“软件测试”赛项竞赛规程

2023年海南省职业院校技能大赛(高职组) “软件测试”赛项竞赛规程 一、赛项名称 赛项名称:软件测试 英文名称:Software Testing 赛项组别:高职组 赛项归属产业:电子信息大类 二、竞赛目标 &#xf…

MySQL详细案例 1:MySQL主从复制与读写分离

文章目录 1. MySQL主从复制1.1 使用场景1.2 MySQL的复制类型1.3 主从复制的作用1.4 主从复制的工作过程1.5 实现MySQL主从复制1.5.1 前置准备1.5.2 主服务器mysql配置1.5.3 从服务器1 mysql配置1.5.4 从服务器2 mysql配置1.5.5 测试 1.6 主从复制的3种同步模式1.6.1 异步复制&a…

微信小程序底部安全区域高度获取

CSS 属性 safe-area-inset-bottom safe-area-inset-bottom 就是安全区的高度 padding-bottom:env(safe-area-inset-bottom); wx.getSystemInfoSync() wx.getSystemInfoSync()可以获取系统信息 let system wx.getSystemInfoSync() let bottomSafe system.screenHeight -…

一招解除csdn复制限制

先看这个代码 python读取英文pdf翻译成中文pdf文件导出代码 想要复制代码,csdn有限制怎么办(csdn流氓,无耻) 解除方法 ctrlu 看效果

Linux启动过程详解 Xmind导图笔记

参考大佬博客: 简要描述linux系统从开机到登陆界面的启动过程 Linux启动过程详解 Bootloader详解 来源:从BIOS开始画图了解Linux启动过程——老杨Linux

OpenCV自学笔记二十六:人脸检测

目录 一、人脸检测 二、LBPH人脸识别 三、EigenFaces人脸识别 四、Fisherfaces人脸识别 一、人脸检测 在OpenCV中,人脸检测是一个常见的计算机视觉任务,可以通过Haar级联分类器来实现。Haar级联分类器是一种基于机器学习的目标检测方法,…

TSINGSEE视频AI智能分析技术:水泥厂安全生产智能监管解决方案

一、方案背景 随着人工智能技术的快速发展以及视频监控系统在全国范围内的迅速推进,基于AI视频智能分析技术的智能视频监控与智慧监管系统,也已经成为当前行业的发展趋势。在工业制造与工业生产领域,工厂对设备的巡检管理、维护维修、资产管…

【全志V3s】SPI NAND Flash 驱动开发

文章目录 一、硬件介绍V3s的启动顺序 二、驱动支持U-Boot驱动主线 Linux 驱动已经支持 三、烧录工具 xfel四、构建U-Boot(官方的Uboot)先编译一下开始spi nand flash 代码层面的适配修改menuconfig配置ARM architecture配置Support for SPI Nand Flash o…

前端大批量并发请求的处理

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>测试大批量并发异步请求</title> </…

关于线程池

线程池是一种多线程处理方式&#xff0c;通过将任务添加到队列中&#xff0c;在创建线程后自动启动这些任务。线程池中的线程可以复用&#xff0c;可以控制最大并发数&#xff0c;并且方便管理&#xff0c;也就是说&#xff0c;线程池会提前创建好一些线程&#xff0c;当后续需…

rabbitMQ (1)

文章目录 1. RabbitMQ 介绍1.1 几个重要概念1.2 RabbitMq 的工作原理 2 RabbitMQ 安装3. RabbitMQ 入门操作3.1 添加依赖3.2 生产者代码3.3 消费者代码 4. Work Queues5. 管理端页面创建队列 1. RabbitMQ 介绍 引用 &#xff1a; RabbitMQ 是一个消息中间件&#xff1a;它接受…

Xilinx FPGA 程序固化重新上电程序不运行的问题

问题描述 FPGA直接下载bit文件,功能正常。 FPGA擦除FLASH,烧写FLASH,正常。 电源断电,重新上电,FALSH里面的程序没有启动,FPGA程序没有跑起来。–FLASH启动不正常。 解决办法 在XDC约束文件里边增加约束: ## Configuration options, can be used for all designs se…

JsonPath详解

JsonPath 简介 JsonPath是一种信息抽取类库&#xff0c;是从JSON文档中抽取指定信息的工具文档 http://goessner.net/articles/JsonPath 安装 pip install jsonpath 使用 注意&#xff1a;这里的json_data为python数据&#xff0c;如列表&#xff0c;字典 data jsonpath.…

[Linux入门]---Linux项目自动化构建工具-make/Makefile

目录 1.背景2.make指令输入make默认为Makefile文件第一条指令执行Makefile文件对gcc指令特殊处理及原理特殊符号 3.总结 1.背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放…

CNN(九):Inception v3算法实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 1 理论基础 Inception v3论文 Inception v3由谷歌研究员Christian Szegedy等人在2015年的论文《Rethinking the Inception Architecture f…

Jmeter集成到jenkins

Jmeter集成到Jenkins Jmeter集成到Jenkins. 1 软件下载... 4 一:环境配置... 4 1.JDK安装&#xff1a;... 4 配置JDK环境变量... 5 2.Jmeter安装&#xff1a;... 5 配置jmeter环境变量... 6 3.安装Ant 7 配置Ant环境变量... 7 4.Git安装&#xff1a;... 8 配置git环境…

C++笔试

数据大小 #define ll long long int 最大值&#xff1a;21,4748,3647 int 最小值&#xff1a;-2147483648 float 最大值&#xff1a;3.40282e38 float 最小值&#xff1a;1.17549e-38 double 最大值&#xff1a;1.79769e308 double 最小值&#xff1a;2.22507e-308 long 最…

Untiy UDP局域网 异步发送图片

同步画面有问题&#xff0c;传图片吧 using System.Text; using System.Net.Sockets; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using System.Net; using System; using System.Threading.Tasks; using Sy…

java内嵌浏览器CEF-JAVA、jcef、java chrome

java内嵌浏览器CEF-JAVA、jcef、java chrome jcef是老牌cef的chrome内嵌方案&#xff0c;可以进行java-chrome-h5-桌面开发&#xff0c;下面为最新版本&#xff08;2023年9月22日10:33:07&#xff09; JCEF&#xff08;Java Chromium Embedded Framework&#xff09;是一个基于…

Cesium 空间量算——生成点位坐标

文章目录 需求分析1. 点击坐标点实现2. 输入坐标实现 需求 用 Cesium 生成点位坐标&#xff0c;并明显标识 分析 以下是我的两种实现方式 第一种是坐标点击实现 第二种是输入坐标实现 1. 点击坐标点实现 //点位坐标getLocation() {this.hoverIndex 0;let that this;this.view…