虚拟化+docker概念

一.虚拟化简介

通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,同时每个逻辑计算机可运行不同的操作系统,应用程序都可以在相互独立的空间内运行而互相不影响,从而提高计算机的工作效率。

1.在一个操作系统中(win10)模拟多个操作系统(centos、win10、suse),同时每个操作系统可以跑不同的服务(nginx+tomcat),从而实现一台宿主机搭建一个集群(从整体)。

2.通过软件/应用程序的方式,来实现物理硬件的功能。例如ensp,以软件形式实现物理设备的功能(二层交换机、路由器、三层交换机等)。

1.1 虚拟化概述

虚拟化:将应用程序和系统内核资源进行解耦,以操作系统级别进行隔离,目的是提高资源利用率

1.2 耦合与解耦合

耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。

1.2.1 耦合

1.耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。

2.对象之间的耦合度就是对象之间的依赖性。

3.对象之间的耦合越高,维护成本越高

1.2.2 解耦合

1.字面意思就是解除耦合关系。

2.在软件工程中,降低耦合度即可以理解为解耦,模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。

设计的核心思想:尽可能减少代码耦合,如果发现代码耦合,就要采取解耦技术。让数据模型,业务逻辑和视图显示三层之间彼此降低耦合,把关联依赖降到最低,而不至于牵一发而动全身。原则就是A功能的代码不要写在B的功能代码中,如果两者之间需要交互,可以通过接口,通过消息,甚至可以引入框架,但总之就是不要直接交叉写。

1.2.3 小结

1.耦合是项目模块之间的关联度高及相互依赖程度高,也就是说我们在后期项目修改时,如果耦合度高的话,这样会牵一发而动全身,增加了相应的维护成本

2.相反,解耦合就是要降低这种模块之间的相互依赖程度,降低维护成本与复杂度。

1.3 虚拟化作用

缓解/解决了资源利用率的问题

**注:**物理硬件的性能就会比虚拟化的性能高,在极度吃资源的情况下,例如mysql高并发这种,就不适合用虚拟化。

虚拟机管理器功能:调用资源

1.4 两大核心组件:QEMU、KVM

1.4.1 QEMU

1.QEMU是I/O控制的模块,可以理解为队列,核心目的是调用资源内核中的资源,需要把KVM逻辑分割出来的资源运输给QEMU,再给虚拟机。

2.QEMU它并不是直接调用,而是用I/O方式调用,QEMU把资源调用来的过程借用ioctl,QEMU借助libvirt这个工具调用ioctl,再通过接口,给虚拟机应用程序。

1.4.2 KVM

1.用来逻辑分割物理资源,抽象化为虚拟化资源,根据VMM里的配置,会逻辑分割出多少G,给应用程序,去进行虚拟化。

2.只接受来自QEMU的请求指令。对于应用程序直接过来的敏感指令会拦截,然后通过接口发给QEMU,让QEMU判断是否需要执行,可以的话,再下来,不可以的话,打回去,不执行该敏感指令。

对于workstation而言——》硬件辅助虚拟化,表现形式在处理器里面有一个虚拟化引擎,可以勾取硬件辅助虚拟化,看到虚拟接口/dev/kvm,可以加强辅助调用,在应用程序需要频繁调用的时候,需要开启。比如openstack。

1.4.3 虚拟化类型

1.全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用

2.半虚拟化:需要修改操作系统

3.直通:直接使用物理硬件资源(需要支持,还不完善)

全虚拟化:KVM——》产品vmware—ce

半虚拟化:EXSI——》workststion vsphere

1.4.4 虚拟化功能

1.在一个操作系统内,模拟多个操作系统

2.以软件的方式模拟物理设备的功能

二、Docker 概述

云计算涌现出很多改变传统IT架构和运维方式的新技术,比如虚拟机、容器、微服务、Serverless(无服务),无论这些技术应用在哪些场景,降低成本、提升效率是云服务永恒的主题。

1.Bare Metal(裸金属):运行物理机,也称为裸金属

2.Virual machines(虚拟机):可以在一台物理机上创建多个虚拟机,并把物理配置分发成多个虚拟配置

缺点:性能损耗大,大约损耗50%

虚拟机常用软件:VMware workstation(windows、vm Sphere+ESXI (Windows server)、KVM(linux内核))

3.Containers(容器):容器内部自身有一个小型操作系统

常用软件:docker、podman、rocket、container

4.functions函数(函数化、代码化)

2.1 Docker 是什么

1.Docker 是一个开源的应用容器引擎,基于go 语言开发并遵循了apache2.0 协议开源

2.Docker 是在Linux 容器里运行应用的开源工具,是一种轻量级的“虚拟机”

3.Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的,可移植的,自给自足的容器。

Docker 的Logo设计为蓝色鲸鱼,拖着许多集装箱,鲸鱼可以看作为宿主机,集装箱可以理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。

2.2 Docker的设计宗旨

Build,Ship and Run Any App,Anywhere,即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

2.3 Docker特点

容器化越来越受欢迎,因为容器是:

灵活:即使是最复杂的应用也可以集装箱化。

轻量级:容器利用并共享主机内核。

可互换:可以即时部署更新和升级。

便携式:可以在本地构建,部署到云,并在任何地方运行。

可扩展:可以增加并白动分发容器副本。

可堆叠:可以垂直和即时堆叠服务。

容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。

虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

Docker从一开始就以提供标准化的运行时环境为目标,真正做到"Build,Ship and Run any APP,Angwhere",可以将同一个构建版本用于开发、测试、预发布、生产等任何环境,并且做到了与底层操作系统的解耦。在此基础上还进一步发展出了Caas (容器即服务)技术。

2.4 Docker与KVM(虚拟机)的区别

1、 隔离与共享
虚拟机通过添加Hypervisor层(虚拟化中间层),虚拟出网卡、内存、CPU等虚拟硬件,再在其上建立虚拟机,每个虚拟机都有自己的系统内核。而Docker容器则是通过隔离(namesapce)的方式,将文件系统、进程、设备、网络等资源进行隔离,再对权限、CPU资源等进行控制(cgroup),最终让容器之间互不影响,容器无法影响宿主机。

容器与宿主机共享内核、文件系统、硬件等资源。

2、 性能与损耗

  • 与虚拟机相比,容器资源损耗要少。
  • 同样的宿主机下,能够建立容器的数量要比虚拟机多
  • 但是,虚拟机的安全性要比容器稍好,要从虚拟机攻破到宿主机或其他虚拟机,需要先攻破 Hypervisor层,这是极其困难的
  • 而docker容器与宿主机共享内核、文件系统等资源,更有可能对其他容器、宿主机产生影响。
不同点 Docker容器虚拟机
启动速度快,几秒钟 慢,几分钟
 运行性能接近原生(直接在内核中运行)运行于Hypervisor上,50%左右损失
磁盘占用  小,甚至几十KB(根据镜像层的情况)非常大,上GB
并发性 一台宿主机可以启动成百上千个容器最多几十个虚拟机
隔离性进程级别资源隔离/限制
操作系统主要支持Linux主要支持Linux
封装程度只打包项目代码和依赖关系共享宿主机内核 完整的操作系统,与宿主机隔离

2.5 docker在内核中支持2种重要技术

docker 本质就是宿主机的一个进程,docker 通过namespace 实现资源隔离,通过==cgroups ==实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘。比如分配500G,并不是实际占用物理磁盘500g,而是随着使用扩展)

2.6 Docker有哪些优势?和虚拟化比有什么优势?

把容器化技术做成了标准化平台

1.docker引擎统一了基础设施环境——docker容器环境(引擎)

2.docker引擎统一了程序打包(装箱)方式——docker镜像(把引擎放在镜像中,带着镜像到处跑)

3.docker引擎统一了程序部署(运行)方式——docker容器(利用引擎把这个镜像再去运行为之前的相同的一模一样的容器了)

镜像——》封装的一个时刻的服务/应用状态

容器——》应用跑起来的状态(正常提供服务的状态 - 运行时)

实现了一次构建,多次、多处使用。

三、Docker的使用场景

1.打包应用程序部署简单

2.可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦)

例如:需要把服务器从腾讯云迁移到阿里云,如果采用的是 Docker容器技术,整个迁移的过程只需要在新的服务器上启动我们需要的容器就可以了。

3.适合做微服务的部署

4.适合持续集成和持续交付(CI/CD):开发到测试发布

5.部署微服务

提供PASS产品(平台即服务){OpenStack的云主机类似于阿里云的ECS,属于IAAS、Docker(K8S)属于PAAS}

四.六大名称空间

mount:文件系统,挂载点——>一个文件系统内,不能重复挂载一个指定目录

user :操作进程的用户和用户组

pid:进程编号

uts:主机名和主机域 (同一个环境里不能又叫node1又叫node2)

ipc:信号量、消息队列、共享内存(不同的应用调用内存资源的时候应该使用不同的内存空间)

net:(网络资源) 网络设备、网络协议栈(在同一个网络名称空间中的网络规则)、端口等

五. 资源控制—cgroups

六种名称空间是由cgroups管理的

最后一种centos的cgroups管理版本是3.8版本,3.6和3.5用不了

cgroups 管理linux内核态中资源管理的模块

cgroups 管理一些系统资源

不是docker原生的。

六.容器特性

特性——》性能损耗10-20%

灵活:即使是最复杂的应用也可以集装箱化。

轻量级:容器利用并共享主机内核。

可互换:可以即时部署更新和升级。

便携式:可以在本地构建,部署到云,并在任何地方运行。

可扩展:可以增加并自动分发容器副本。

可堆叠:可以垂直和即时堆叠服务。

七.Docker 三要素(核心组件)

Docker images:镜像:统一的封装方式——》模板

Docker container:容器:统一的运行时环境 ——》基于镜像,运行状态/运行时状态

Docker registry:镜像仓库:放置镜像的仓库——》存放镜像模板

存储镜像的地方,默认在公共的 Docker Hub上查找,可以搞个人仓库。

仓库大类:①公共仓库—》docker hub ②私有仓库registry harbor

八、总结

1、什么是docker?docker原理?

docker是一种封装和运行的开源平台,他统一了封装方式,统一了运行方式,开源平台指的是docker引擎,统一的封装方式指的是镜像,统一的运行方式指的是容器。

cgroup资源控制与namespaces两者构成了docker底层原理

docker是一种容器技术,把linux中的cgroups(资源管理)和namespace(名称空间)等容器底层技术进行完美封装,并抽象为用户创建和管理容器的便捷界面(命令行cli、api等),这种C/S架构

2、简述Docker主要使用的技术?

Cgroups:资源控制,管理一些系统资源

Namespace:资源隔离(名称空间)

rootfs:文件系统隔离(使用内核提供的rootfs)

容器引擎(用户态工具) :生命周期控制

docker本质就是宿主机的一个进程, docker是通过namespace(命名空间)实现资源隔离,通过cgroup,实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘50og)

Namespace:资源隔离(名称空间)

mount    文件系统,挂载点——>一个文件系统内,不能重复挂载一个指定目录

user 操作进程的用户和用户组

pid  进程编号

uts  主机名和主机域 (同一个环境里不能又叫node1又叫node2)

ipc   信号量、消息队列、共享内存(不同的应用调用内存资源的时候应该使用不同的内存空间)

net(网络资源)  网络设备、网络协议栈(在同一个网络名称空间中的网络规则)、端口等

3、简述Docker体系架构?

Docker客户端 - Docker

docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。

Docker服务端-Docker Daemon资源限制

docker服务端是一个服务进程,管理着所有的容器。

Docker镜像一Imagefont>

Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向Docker容器引擎的只读模板。通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码。运行时间,库,环境变量,和配置文件

Docker容器-Docker Container

Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。

Docker镜像仓库-- Registryfont>

Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private、常用)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。

Docker的镜像、容器、日志等内容全部都默认存储在**/var/lib/docker**目录下。

4、Docker有哪些优势?和虚拟化比有什么优势?

docker把容器化技术做成了标准化平台,只要安装了docker引擎,就能使用docker。

使用docker有什么意义(实现了3个统一)

docker引擎统一了基础设施环境-docker环境——>image——>封装一一个简易的操作系统(3.0+G)

docker引擎统一了 程序打包(装箱/封装-类比于集装箱)方式-docker镜像——>images

docker引擎统—了程序部署(运行)方式-docker容器——>基于镜像——>运行为容器(可运行的环境)

实现了一次构建,多次、多处使用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

jmeter之连接MySQL数据库

jmeter连接mysql数据库 mysql官网下载地址:MySQL :: Download Connector/J 步骤如下: 1、下载mysql的jar包放入到jmeter的lib/ext下,然后重启jmeter 链接: https://pan.baidu.com/s/1rRrMQKnEuKz8zOUfMdMHFg?pwdawfc 提取码: awfc 2、配置…

构建NodeJS库--前端项目的打包发布

1. 前言 学习如何打包发布前端项目,需要学习以下相关知识: package.json 如何初始化配置,以及学习npm配置项; 模块类型type配置, 这是nodejs的package.json的配置main 入口文件的配置 webpack 是一个用于现代 JavaSc…

ElasticSearch总结二

正向索引和倒排索引: 正向索引: 比方说我这里有一张数据库表,那我们知道对于数据库它一般情况下都会基于i d去创建一个索引,然后形成一个b树。 那么你根据i d进行检索的速度,就会非常的快,那么这种方式的…

Cesium之加载GeoServer或geowebcache的WMTS服务

文章目录 Cesium加载GeoServer的WMTS关键代码WMTS服务地址获取核心参数获取 Cesium加载GeoServer的WMTS关键代码 Cesium之加载GeoServer或geowebcache的WMTS服务关键代码如下 var url2"http://localhost:8090/geowebcache/service/wmts/rest/arcgis_com/{style}/{TileMat…

在excel中,如何在一个表中删除和另一个表中相同的数据?

现在有A表,是活动全部人员的姓名和学号,B表是该活动中获得优秀人员的姓名和学号, 怎么提取没有获得优秀人员的名单? 这里提供两个使用excel基础功能的操作方法。 1.条件格式自动筛选 1.1按住Ctrl键,选中全表中的姓…

的记忆:pandas(实在会忘记,就看作是一个 Excel 表格,或者是 SQL 表,或者是字典的字典。)

pandas 是一个开源的 Python 数据分析库,它提供了快速、灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的“快速分析、清洗和转换”变得既简单又直观。pandas 非常适合于数据清洗和转换、数据分析和建模等任务。以下是 pandas 的基本概念和主…

用 LM Studio 1 分钟搭建可在本地运行大型语言模型平台替代 ChatGPT

📌 简介 LM Studio是一个允许用户在本地离线运行大型语言模型(LLMs)的平台,它提供了一种便捷的方式来使用和测试这些先进的机器学习模型,而无需依赖于互联网连接。以下是LM Studio的一些关键特性: 脱机&am…

C++笔记:C++中的重载

重载的概念 一.函数重载 代码演示例子&#xff1a; #include<iostream> using namespace std;//函数名相同&#xff0c;在是每个函数的参数不相同 void output(int x) {printf("output int : %d\n", x);return ; }void output(long long x) {printf("outp…

RTU遥测终端为城市排水安全保驾护航!

近年来&#xff0c;全球气候变迁与城市化进程不断加速&#xff0c;导致强降雨事件频发&#xff0c;道路低洼地带、下穿式立交桥和隧道等区域在暴雨中常易积水&#xff0c;严重阻碍了人民的出行&#xff0c;甚至危及生命与财产安全。而传统的排水管网管理方式已难以适应现代城市…

mybatis的使用技巧8——联合查询union和union all的区别和用法

在实际项目开发中&#xff0c;会经常联合查询结构相似的多张数据表&#xff0c;使用union关键字就只需要一次sql操作&#xff0c;而无需执行多次查询并通过代码逻辑合并处理&#xff0c;减少了大量繁琐的操作&#xff0c;最重要的是还能通过可选的all关键字筛选重复的数据。 1…

数据结构基础:链表操作入门

数据结构基础&#xff1a;链表操作入门 数据结构基础&#xff1a;链表操作入门链表的基本概念链表的基本操作输出链表插入节点删除节点查找值 完整的链表操作示例结语 数据结构基础&#xff1a;链表操作入门 在计算机科学中&#xff0c;数据结构是组织和存储数据的方式&#x…

海康Visionmaster-常见问题排查方法-启动失数

问题2&#xff1a;VM无法启动&#xff0c;报错&#xff1a;参数错误&#xff1b;  问题原因&#xff1a;客户电脑环境异常导致代理启动失败。  解决方法&#xff1a;安装运行时库&#xff0c;并测试代理能否正常启动,步骤如下&#xff1a; ① 尝试双击代理进程&#xff…

WPF 6 命令

命令 创建一个按钮&#xff0c;新建一个事件&#xff0c;按住F12 就可以添加业务代码 运行代码 此时希望UI与后台代码分离&#xff0c;互不影响 此时新建一个MainViewModel类&#xff0c;来保存业务代码 Icommand 是所有command的父类接口 新建一个command来实现这个接口…

OceanBase诊断调优 】—— 如何快速定位SQL问题

作者简介&#xff1a; 花名&#xff1a;洪波&#xff0c;OceanBase 数据库解决方案架构师&#xff0c;目前负责 OceanBase 数据库在各大型互联网公司及企事业单位的落地与技术指导&#xff0c;曾就职于互联网大厂和金融科技公司&#xff0c;主导过多项数据库升级、迁移、国产化…

蓝桥杯:日期问题(我的绝望题)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;每日一练 &#x1f337;追光的人&#xff0c;终会万丈光芒 目录 前言&#xff1a; &#x1f337;1.问题描述&#xff1a; 1.问题描述&#xff1a; 2.输入格式&#xff1a; 3.输出格式&#…

HarmonyOS开发案例:【相机开发】

基本概念 相机是OpenHarmony多媒体进程提供的服务之一&#xff0c;提供了相机的录像、预览、拍照功能&#xff0c;支持多用户并发取流。 在进行应用的开发前&#xff0c;开发者应了解以下基本概念&#xff1a; 视频帧 视频流指的是将一系列图片数据按照固定时间间隔排列形成的…

探索设计模式的魅力:主从模式与AI大模型的结合-开启机器学习新纪元

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索主从模式与AI大模型之旅✨ &#x1f31f;Hey, tech enthusiasts! 你是否还在追…

AI论文速读 |2024[TPAMI]【综述】自监督学习在时间序列分析的分类、进展与展望

题目&#xff1a; Self-Supervised Learning for Time Series Analysis: Taxonomy, Progress, and Prospects 作者&#xff1a;Kexin Zhang, Qingsong Wen(文青松), Chaoli Zhang, Rongyao Cai, Ming Jin(金明), Yong Liu(刘勇), James Zhang, Yuxuan Liang(梁宇轩), Guansong…

运维 kubernetes(k8s)基础学习

一、容器相关 1、发展历程&#xff1a;主机–虚拟机–容器 主机类似别墅的概念&#xff0c;一个地基上盖的房子只属于一个人家&#xff0c;很多房子会空出来&#xff0c;资源比较空闲浪费。 虚拟机类似楼房&#xff0c;一个地基上盖的楼房住着很多人家&#xff0c;相对主机模式…

【python程序打包教程】PyInstaller一键打包Python程序为独立可执行exe文件

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…
最新文章