虚拟化和容器

1 介绍

1.1 简介

虚拟化(技术)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。

1.2 虚拟化工作原理

在这里插入图片描述

1.3 两大核心组件:QEMU、KVM

QEMU

  • QEMU是I/O控制的模块,可以理解为队列,核心目的是调用资源内核中的资源,需要把KVM逻辑分割出来的资源运输给QEMU,再给虚拟机。
  • QEMU它并不是直接调用,而是用I/O方式调用,QEMU把资源调用来的过程借用ioctl,QEMU借助libvirt这个工具调用ioctl,再通过接口,给虚拟机应用程序。

KVM

  • 用来逻辑分割物理资源,抽象化为虚拟化资源,根据VMM里的配置,会逻辑分割出多少G,给应用程序,去进行虚拟化。
  • 只接受来自QEMU的请求指令。对于应用程序直接过来的敏感指令会拦截,然后通过接口发给QEMU,让QEMU判断是否需要执行,可以的话,再下来,不可以的话,打回去,不执行该敏感指令。

1.4 发展历史

在这里插入图片描述
1974年,两位计算机科学家Gerald Popek 和 Robert Goldberg发表了一篇重要的论文《虚拟化第三代体系结构的正式要求》,在这篇论文中提出了虚拟化的三个基本条件:

  • 等价性:程序在本地计算机执行和在虚拟机中执行应该表现出一样的结果(不包括执行时间的差异)
  • 安全性:虚拟机彼此隔离,与宿主计算机隔离
  • 性能:绝大多数情况下虚拟机中的代码指令应该直接在物理CPU中执行,少部分特殊指令可由VMM参与。

1.5 虚拟化类型

全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用
半虚拟化:需要修改操作系统
全虚拟化:【KVM】产品vmware—ce
半虚拟化:【EXSI】workststion vsphere

1.6 云计算与虚拟化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SaaS: Software-as-a-Service(软件即服务)
PaaS: Platform-as-a-Service(平台即服务)
IaaS: Infrastructure-as-a-Service(基础设施即服务)

1.7 Hypervisor

Hypervisor,汉译为“超级监督者”,也叫做VMM(Virtual Machine Monitor,虚拟机监视器),它是一类软件的统称。

Hypervisor分为两大类

  • Type I: 直接凌驾于硬件之上,构建出多个隔离的操作系统环境
  • Type II: 依赖于宿主操作系统,在其上构建出多个隔离的操作系统环境pp

在这里插入图片描述
像VMware、KVM、Xen、Virtual Box,都属于Hypervisor。

1.8 虚拟化 VS 容器

在这里插入图片描述

2 虚拟化应用

docker

Docker是创建容器的工具,属于轻量级虚拟机。
Docker能够运行Windows实际上是通过QEMU完成的,Docker做的事情只是把QEMU的这个环境打包成一个独立的环境。
在这里插入图片描述

docker 与虚拟机的区别

不同点 Docker容器 虚拟机
启动速度 快(几秒) 慢(几分钟)
行性能 接近原生(直接在内核中运行) 运行于Hypervisor上,50%左右损失
磁盘占用 小,设置几十kb(根据镜像层的情况) 非常大(GB)
并发性 一台宿主机可以启动成百上千个容器 最多几十个虚拟机
隔离性 进程级别 资源隔离、限制
操作系统 主要支持Linux 主要支持Linux
封装程度 打包项目代码和依赖关系,共享宿主机内核 完整的操作系统,与宿主机隔离

K8S

K8S,就是Kubernetes,中文意思是舵手或导航员。Kubernetes这个单词很长,所以大家把中间8个字母缩写成8,就成了K8S。
在这里插入图片描述

wine

Wine完成的目标是“在Linux系统上,运行Windows应用程序“。
Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是將 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。

参考

1、Docker:简单了解虚拟化和容器概念
2、看懂云计算、虚拟化和容器,这一篇就够啦!
3、虚拟化软件Docker、Wine、Qemu、KVM有什么区别?
4、懂了!VMware/KVM/Docker原来是这么回事儿
5、系统–车载系统
6、机器人开发–OS系统介绍
7、ubuntu虚拟机中使用QEMU搭建ARM64环境
8、Wine(ubuntu)

猜你喜欢

转载自blog.csdn.net/qq_38880380/article/details/132751849