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