简单介绍虚拟化技术vs容器化

已剪辑自: https://blog.51cto.com/wangtianci/2679348

什么是虚拟化

笔者对虚拟化不太了解,也没有具体使用过,基本都是从网上了解的,只是简单说一下个人理解。

虚拟化是一个广泛的定义和概念,核心是对资源的抽象,是把有限的、固定的资源根据不同需求进行重新规划以达到最大利用率的策略,就叫做虚拟化。

虚拟化依赖软件来模拟硬件功能并创建虚拟计算机系统。这使 IT组织能够在单个服务器上运行多个虚拟系统以及多个操作系统和应用。由此带来的好处包括规模经济和更高的效率。

简单来讲,虚拟化是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率和经济控制。

什么是虚拟机

虚拟计算机系统称为"虚拟机"(VM),它是一种严密隔离且内含操作系统和应用的软件容器。每个自包含虚拟机都是完全独立的。通过将多台虚拟机放置在一台计算机上,可仅在一台物理服务器或"主机"上运行多个操作系统和应用。

名为"hypervisor"的精简软件层可将虚拟机与主机分离开来,并根据需要为每个虚拟机动态分配计算资源;

虚拟机的主要特性

1. 分区

​ 可在一台物理上运行多个操作系统。

​ 可在虚拟机之间分配系统资源。

2. 隔离

​ 可在硬件级别进行故障和安全隔离。

​ 可利用高级资源控制功能保持特性。

3. 封装

​ 可将虚拟机的完整状态保存到文件中。

​ 移动和复制虚拟机就像移动和复制文件一样轻松。

4. 独立于硬件

​ 可将任意虚拟机调配或迁移到任意物理服务器上。

虚拟化技术有那些

KVM、Xen、Vmware、Hyper-V、VirtualBox

笔者只在本地用过VMware workstations,在本地开启2个虚拟机后,笔记本的Cpu和内存使用率飙升。

虚拟化技术有哪些实现(基本都是网上了解的)

1. cpu虚拟化

​ 简单说来,CPU的虚拟化技术就是单CPU串行模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

2. 网络虚拟化

​ 没理解,不做解释…

3. 桌面虚拟化

​ 桌面虚拟化是一种在本地数据中心或云端发布终端用户桌面和应用,并在端点设备上呈现的软件技术。使终端用户能够安全地访问企业资源,以及随时随地在任何设备上工作。精简的现代桌面虚拟化方法使客户的企业能够交付、保护和管理桌面和应用,同时控制成本。

4. 服务器虚拟化

​ 服务器虚拟化是将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,不再受限于物理上的界限,而是让CPU、内存、磁盘、I/O等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,简化系统管理,实现服务器整合,让IT对业务的变化更具适应力。

5. 存储虚拟化

​ 所谓虚拟存储,就是把多个存储介质模块(如硬盘、RAID)通过一定的手段集中管理起来,所有的存储模块在一个存储池(Storage Pool)中得到统一管理,从主机和工作站的角度,看到就不是多个硬盘,而是一个分区或者卷,就好象是一个超大容量(如1T以上)的硬盘。这种可以将多种、多个存储设备统一管理起来,为使用者提供大容量、高数据传输性能的存储系统,就称之为虚拟存储。个人理解"LVM逻辑卷"就是一种实现方式。

6. 应用虚拟化

​ 官方解释是这么说的,应用程序虚拟化是将应用程序与操作系统解耦合,为应用程序提供了一个虚拟的运行环境。在这个环境中,不仅包括应用程序的可执行文件,还包括它所需要的运行时环境。从本质上说,应用虚拟化是把应用对低层的系统和硬件的依赖抽象出来,可以解决版本不兼容的问题。

​ 笔者balabala几句,和桌面虚拟化技术一样,应用程序不是存在本地电脑上,也是在后台的数据中心里,只是桌面虚拟化推送的是整个桌面,而应用程序虚拟化推送的是某个应用程序,用户只能看到应用程序。

容器vs虚拟机

容器和虚拟机都依赖于宿主机才能运行。宿主机可以是笔记本,是数据中心的物理服务器,也可是公有云的某个实例。

虚拟机

​ \1. 在虚拟机中,首先要开启物理机并启动Hypervisor引导程序,一旦Hypervisor启动,就会占用机器上的全部资源,如CPU、RAM、存储等。Hypervisor会将这些物理资源划分为虚拟资源,并且看起来与与真是物理资源完全一致。然后Hypervisor会将这些资源打包进一个叫做虚拟机(VM)的软件结构当中。

​ \2. 每个虚拟机都需要有自己的操作系统,因为操作系统本身都是有额外的开销。例如每个操作系统都需要消耗一点CPU、一点RAM、一点存储空间。相比于Docker虚拟机使用的额外开销更多。

​ \3. 每个虚拟机都有自身的操作系统,操作系统启动涉及到BIOS启动引导以及初始化过程,所以启动的时间相比于Docker来说更耗时。

​ \4. 同时每个虚机的操作系统为了提升安全性,有可能面临打补丁升级,也会面临被攻击的风险。

简单介绍虚拟化技术vs容器化(2)_Linux、容器化、Docker、虚拟化

容器

​ \1. 而容器模型则有些不同,服务器启动后,所选择的操作系统会启动,操作系统会占用全部的硬件资源。在操作系统上层只需要安装Docker引擎,Docker就可以获取系统资源,接着将资源分割为安全的互相隔离的资源结构,称之为容器。

​ \2. 同一台宿主机上的所有容器共享操作系统,这意味着只有1个操作系统消耗CPU、RAM和存储空间。简而言之,就是只有一份操作系统损耗资源。

​ \3. 容器是运行在操作系统之上的,内部并不需要内核,也就不涉及BIOS以及初始化过程,更不涉及硬件的遍历和初始化了。唯一对容器启动时间有影响的就是容器内应用启动所花费的时间了。

简单介绍虚拟化技术vs容器化(2)_Linux、容器化、Docker、虚拟化_02

可以看出,Hypervisor是硬件虚拟化,将硬件物理资源划分为虚拟资源;容器是操作系统虚拟化,将操作系统划分为虚拟资源。

这就是容器模型比虚拟机模型简洁并且高效的原因了。使用容器可以在更少的资源上运行更多的应用,启动更快,同时面对未知攻击的风险也更小。

看图理解

在网上看到一张物理机、虚拟机、容器的类比图,很有意思,这里借鉴一下。

物理机

简单介绍虚拟化技术vs容器化(2)_Linux、容器化、Docker、虚拟化_03

虚拟机

简单介绍虚拟化技术vs容器化(2)_Linux、容器化、Docker、虚拟化_04

容器化

简单介绍虚拟化技术vs容器化(2)_Linux、容器化、Docker、虚拟化_05

猜你喜欢

转载自blog.csdn.net/qq_41854911/article/details/131367187