虚拟化技术可以通俗的理解成“把一台电脑虚拟成N台电脑”。
第一个流派叫做“硬件虚拟化”
硬件虚拟化的机制超级复杂,我认怂。。。
这里贴上这篇科普文章,感兴趣的小伙伴请猛戳这里
科普:什么是硬件虚拟化技术
https://baijiahao.baidu.com/s?id=1573894724153924&wfr=spider&for=pc
第二个流派叫做“软件虚拟化”
其实软件虚拟化,各位小伙伴都玩过,以前为了玩某些特殊的日本游戏,我们通常会在自己的电脑上安装一个虚拟机,画了张图进行说明:
首先,我们自己的电脑,即图中最底层的“硬件”;
然后,在这台电脑上安装操作系统,即图中“物理机操作系统”;
再然后,我们在这个操作系统上安装VMWare之类的虚拟机管理软件,即图中“Hypervisor”;
再然后,在虚拟机管理软件上安装一个虚拟机,即图中“虚拟操作系统”;
最后,在虚拟操作系统上,安装那些特殊的日本游戏,即同种“应用软件”;
图中红框,就是软件虚拟化技术,从而实现了把一台真实的物理机器,切分成了N台虚拟的机器。
另外,Java虚拟机、.Net框架也是一种软件虚拟化技术。
第三个流派叫做“容器化”
容器化流派就是利用了Lin的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容器化的架构(如下图)
最后,展开一下在Docker的官网上、各类书籍中常见的这张Docker架构图
这张图画的很深刻,很形象、简洁的表达了Docker的技术脉络