一、Docker 容器与虚拟机的区别
1、隔离与共享
• 虚拟机通过添加 Hypervisor 层,虚拟出网卡、内存、CPU 等虚拟硬件,再在其上建立虚拟机,每个虚拟机都有自己的系统内核
• Docker容器则是通过隔离的方式,将文件系统、进程、设备、网络等资源进行隔离,再对权限、CPU资源等进行控制,最终让容器之间互不影响,容器无法影响宿主机
• 容器与宿主机共享内核、文件系统、硬件等资源
2、性能与损耗
与虚拟机相比,容器资源损耗要少。同样的宿主机下,能够建立容器的数量要比虚拟机多。但是,虚拟机的安全性要比容器稍好,要从虚拟机攻破到宿主机或其他虚拟机,需要先攻破 Hypervisor 层,这是极其困难的。
而 docker 容器与宿主机共享内核、文件系统等资源,更有可能对其他容器、宿主机产生影响
不同点 |
Docker容器 |
虚拟机 |
启动速度 |
秒级 |
分钟级 |
运行性能 |
接近原生(直接在内核中运行) |
50%左右损失 |
磁盘占用 |
MB |
GB |
数量 |