结构方面区别
虚拟机实现资源隔离的方式,是利用Hypervisor虚拟化
而
简单来说,Docker就是利用namespace实现的系统环境的隔离,利用cgroup实现资源限制,利用镜像实现根环境的的隔离。
性能方面区别
由于Docker有着比虚拟机更少的抽象层,不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,减少了加载操作系统内核的时间和资源的消耗,因此,在CPU、内存等资源利用率上更有优势。
比如,容器启动时间是秒级,而虚拟机都是分钟级,硬盘使用一般为MB计算,而虚拟机大多是GB级的空间占用,在性能上,容器更接近原生,单机就能支持上千个,远多于虚拟机的几十个。
docker设计小巧,部署迁移快速,运行高效,应用之间相互独立,管理人员可以看到所有容器的内容。而虚拟化技术比较臃肿,不论什么应用都需要先创建新的系统,并且并非按照应用隔离,而是按照系统隔离,管理员无法看到系统内部信息。
以上是关于docker容器和虚拟机的区别介绍,