虚拟化技术的前世今生

云计算 虚拟化
虚拟化技术可以通俗的理解成“把一台电脑虚拟成N台电脑”。第一个流派叫做“硬件虚拟化”第二个流派叫做“软件虚拟化”第三个流派叫做“容器化”

 虚拟化技术可以通俗的理解成“把一台电脑虚拟成N台电脑”。

***个流派叫做“硬件虚拟化”

硬件虚拟化的机制超级复杂,我认怂。。。

这里贴上这篇科普文章,感兴趣的小伙伴请猛戳这里

科普:什么是硬件虚拟化技术

https://baijiahao.baidu.com/s?id=1573894724153924&wfr=spider&for=pc

[[218923]]

第二个流派叫做“软件虚拟化”

其实软件虚拟化,各位小伙伴都玩过,以前为了玩某些特殊的日本游戏,我们通常会在自己的电脑上安装一个虚拟机,画了张图进行说明:

首先,我们自己的电脑,即图中***层的“硬件”;

然后,在这台电脑上安装操作系统,即图中“物理机操作系统”;

再然后,我们在这个操作系统上安装VMWare之类的虚拟机管理软件,即图中“Hypervisor”;

再然后,在虚拟机管理软件上安装一个虚拟机,即图中“虚拟操作系统”;

***,在虚拟操作系统上,安装那些特殊的日本游戏,即同种“应用软件”;

图中红框,就是软件虚拟化技术,从而实现了把一台真实的物理机器,切分成了N台虚拟的机器。

另外,Java虚拟机、.Net框架也是一种软件虚拟化技术。

第三个流派叫做“容器化”

容器化流派就是利用了Linux的LXC、CGroup等技术。

LXC的本质就是“进程隔离、资源隔离”——1台物理机切分成N台虚拟机成为了可能;

CGroup的本质就是LXC的资源管理机制——N台虚拟机谁占用物理机多少CPU?内存?

具体的技术讲解,贴上百度百科,有兴趣的同学请自行脑补

LXC介绍

https://baike.baidu.com/item/lxc/6014808?fr=aladdin

CGroup介绍

https://baike.baidu.com/item/Cgroup

Docker容器化的架构(如下图)

  • 关键点1:物理操作系统上安装上Docker的守护进程;
  • 关键点2:Docker上运行着N个容器;
  • 关键点3:Docker为每个容器分配指定的硬件资源(CGroup);
  • 关键点4:每个容器彼此隔离,你不知我,我不知你(LXC之Namespace);
  • 关键点5:每个容器非常小、非常小、非常小

***,展开一下在Docker的官网上、各类书籍中常见的这张Docker架构图

这张图画的很深刻,很形象、简洁的表达了Docker的技术脉络

  • Docker daemon:docker的守护进程,一切神秘的机制都包含在此;
  • REST API:docker守护进程提供http接口,可以通过http方式操作;
  • docker CLI:docker守护进程提供的命令行接口,可以通过命令行方式操作;
  • API的分类:无论rest,还是cli,分为4类——镜像管理、容器管理、数据卷管理、网络管理
  • 镜像:打个通俗的比方,我们在物理机上安装一个windows,然后用Ghost做一个备份,如果电脑被黑了,马上把备份拿出来还原,这个“备份”在Docker的世界里叫做“镜像”。
  • 容器:上面所说的备份,你拿到***台物理机上还原出来,那么这个还原出来的windows系统就是一个“容器”——一个镜像可以生成出N个容器
  • 数据卷:每个容器如果要把数据穿透Docker,直达物理机的硬盘,这就要用到数据卷。
  • 网络:前文说过,容器和容器,你不知我,我不知你,彼此隔离,即使在同一个物理机上的两个容器好像网络上两个孤岛,彼此不能通信,打通他们,就要用到网络
责任编辑:武晓燕 来源: 你吖才码农
相关推荐

2018-08-08 14:37:53

显卡虚拟化3D

2012-11-01 10:59:38

桌面虚拟化

2022-09-14 21:15:44

互联网存储技术

2023-08-16 14:56:07

2022-09-05 09:01:13

前端模块化

2012-11-05 09:37:39

虚拟化

2015-11-18 14:14:11

OPNFVNFV

2014-07-30 10:55:27

2011-08-23 09:52:31

CSS

2018-08-03 13:02:03

数据中心液冷冷却

2016-11-08 19:19:06

2016-11-03 13:33:31

2013-05-23 16:23:42

Windows Azu微软公有云

2014-07-21 12:57:25

诺基亚微软裁员

2016-12-29 18:21:01

2014-07-15 10:31:07

asyncawait

2016-12-29 13:34:04

阿尔法狗围棋计算机

2021-06-17 07:08:19

Tapablewebpack JavaScript

2012-05-18 16:54:21

FedoraFedora 17

2019-06-04 09:00:07

Jenkins X开源开发人员
点赞
收藏

51CTO技术栈公众号