Docker vs VM

今天整理微服务相关资料时,顺便看了下Docker,自己给自己做了个科普,窃取几张图(来自下文中的参考资料),并整理了下两种技术的对比

Hypervisor Type I

Hypervisor Type II

Docker vs VM

分析项 Docker容器技术 虚拟机(VM)技术
启动耗时 在几秒钟内启动 需要几分钟才能启动
运行形态 通过执行引擎(execution engine)运行
直接运行于宿主机的内核上,不同容器共享同一个Linux内核
通过管理程序(hypervisor)运行
即运行于hypervisor上
独立性 由于没有隔离系统的规定,容易受扰 由于有效的隔离机制,干扰的可能性最小
OS依赖 基于Linux内核,仅支持Linux OS无关
部署 部署很容易,因为只有一个镜像,容器化可以在所有平台上使用 部署相对较长,因为单独的实例负责执行
用法 有一个复杂的使用机制,由第三方和docker托管工具组成 工具相对简单易用
占用磁盘空间 小,甚至几十KB(镜像层的情况) 非常大,上GB
内存效率 无需虚拟化,内存占用少 需要先启动虚拟化的OS,效率相对低下
并发性 一台宿主机可以启动成千上百个容器 最多几十个虚拟机
性能 接近宿主机本地进程 逊于宿主机

相关参考材料