docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker和虚拟机的区别

Docker和虚拟机的区别及说明

作者:洛上言

Docker与虚拟机(VM)主要差异在于实现方式及效率,Docker通过打包应用及其依赖于容器中,直接与操作系统内核交互,实现跨系统运行,而无需模拟整个操作系统,这使得Docker在体积、启动速度及性能上优于虚拟机,虚拟机通过模拟硬件环境

Docker可以让一个应用在任何操作系统中非常方便的运行。而以前我们接触的虚拟机,也能在一个操作系统中,运行另外一个操作系统,保护系统中的任何应用。

两者有什么差异呢?

Doker的实现原理

Docker把应用及其所需要的依赖、函数库、甚至操作系统函数库也一起打包,那这样一来,应用直接运行时,可以直接调用本地函数库,然后与Linux内核进行交互,这样它就不再关心操作系统是什么系统了,于是就能实现跨系统的一种运行了。

虚拟机(virtual machine)

用到了一种名为Hypervisor的技术,这种技术可以在操作系统中模拟一个计算机的各种各样的硬件设备(比如CPU、内存等等),然后在这个模拟出的计算机上运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。

既然操作系统都能重新安装,那我们就可以在它上边去安装任意适合的依赖、函数库、以及应用,这样也实现了跨系统的应用部署。

image-20210731145914960

对比来看

我们的虚拟机它是在一个系统里装了另外的一个系统,所以当应用执行时它会以为自己在一台真实的电脑上,因此它会去调用这个内置的操作系统,然后它再与Hypervisor进行交互,然后再把信息传递给了我们的web操作系统,web操作系统再去调用计算机硬件,于是我们的应用执行就完成了,此时它经过了层层的传递,所以它的性能相对来讲是比较差一点的。

Docker应用在执行时,是直接调用操作系统内核的,所以它的执行性能要比虚拟机的执行性能要好很多。

并且Docker仅仅是封装应用程序执行需要的一些简单的函数库和依赖,并没有模拟完整的操作系统,所以体积往往比较小,最小的一个docker容器可能只有几MB,而大一点就是几十MB,几百MB;而虚拟机动不动就要几个g甚至几百g的内存空间,因此体积占用是比较大的。

并且虚拟机启动的时候需要启动虚拟的计算机的操作系统,等于把这个计算机重启了一遍,然后再去启动虚拟操作系统上面的应用。

而Docker就是直接在操作系统上把一个进程启动起来了,所以它的启动速度也是非常的快。

总结:Docker和虚拟机的差异

因此,现在企业做服务部署,基本上都会去选择用docker,而不会选择用虚拟机。

特性Docker虚拟机
性能接近原生性能较差
硬盘占用一般为 MB一般为 GB
启动秒级分钟级

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文