虚拟机和容器的区别
虚拟机:拥有独立的Guest OS,Hypervisor层虚拟化硬件资源, 例如CPU、内存、IO设备,实现资源和环境隔离。虚拟机提供客户机操作系统,客户机变化不会影响宿主机,能够提供可控的测试环境,更能够屏蔽底层硬件甚至基础软件的差异性,让应用做到的广泛兼容。
容器:严格来说并不是虚拟化,没有Guest OS,直接利用宿主机内核和硬件资源,能够高效地部署和扩容。容器可以视为软件供应链的集装箱,把应用需要的运行环境、缓存环境、数据库环境封装起来。简单来说,Docker就是利用 Namespace 实现了系统环境的隔离,利用了cgroup实现了资源的限制,利用镜像实例实现跟环境的隔离。Docker有着比虚拟机更少的抽象层,而且不需要硬件资源的虚拟化,因此在利用资源和运行效率上具有极大优势。可以实现秒级启动。快速启动低资源消耗的优点,使Docker在弹性云平台自动运维系统方面具有很好的应用场景。
服务器虚拟化解决的核心问题是资源调配,而容器解决的核心问题是应用开发、测试和部署。