且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

虚拟机和Docker的最大区别

更新时间:2022-09-15 15:31:02

使用Vagrant和KVM 或者Hyper-V我们可以构建和运行虚拟机。相关的工具比如 ansible, chef 或者puppet可以用来进行环境的设置和配置。


虚拟机和Docker的最大区别虚拟机和Docker的最大区别



虚拟机和Docker都能够给一台宿主机上的应用提供隔离的运行环境。区别是什么呢?


从上图右边虚拟机架构图能看出,虚拟机里在宿主操作系统和物理硬件之间多了一个中间层:Hypervisor。


Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,事实上成为虚拟环境中的“元”操作系统,Hypervisor可以协调访问服务器上的所有物理设备和虚拟机,也称为虚拟机监视器(Virtual Machine Monitor)。Hypervisor是所有虚拟化技术的核心。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统,每台虚拟机有自己的虚拟操作系统和存储空间,因此需要消耗宿主机大量的物理资源,同时也需要花费一定时间来启动。


而上图左边,Docker直接运行在宿主机的操作系统上,没有Hypervisor这个中间层。Docker实际上就是运行于操作系统上的普通进程,通过Linux Primitives实现的彼此隔离,但是共享同一个操作系统内核。

虚拟机和Docker的最大区别


正因为这种共享性,使得Docker的资源占用远小于虚拟机,而且启动速度也远远快于虚拟机。