虚拟机和容器的区别
首先放一张图,对虚拟机和容器做一个整体的对比。
什么是虚拟机(virtual machines (VMs))?
随着服务器的能力和容量的逐渐增加,而一个机器上只能一次运行一种操作系统。因此虚拟机应时而生,在物理服务器的上层运行软件模拟特定的硬件系统。Hypervisor位于硬件和系统之间,是创建虚拟机必须的一个部分。
每个虚拟机中都运行着一个系统。安装不同系统的虚拟机可以在同一个服务器上运行。例如,一个Unix系统和Linux系统的虚拟机可以在同一个服务器上运行,并且每个虚拟机可以拥有一个比较大的容量。
什么是容器(containers)?
操作系统的虚拟化在过去越来越受欢迎,这就意味着当一个服务器的运行环境移动到另一个服务器的运行环境时,软件也可以正常的运行。容器提供了可以在一个服务器上把各个运行环境(操作系统)隔离开的一种方法。
容器位于硬件和操作系统的上方,这个操作系统可以是Linux,也可以是Windows。每个容器都共享主机操作系统的内核通常还包括文件的库。共享的组件是只能进行读取的,每个容器都可以通过特定的方法进行挂载写入。这就使得容器特别的‘’轻‘’,容器的大小一般以M(兆)为单位,只需要几分钟就可以启动完成,而虚拟机常常需要几分钟再能启动完成。
容器的好处就在于它的启动速度和‘’轻‘’的特点。容器可实现“可共享”,可用于各种公共和私有云部署,通过快速打包应用程序及其依赖的环境来加速开发和测试。另外,容器可以减小运营的开销。
由于容器是共享主操作系统的内核,因此就无法在服务器上运行与主服务器不同的操作系统,也就是说不能再Linux的服务器上运行Windows。
END
虚拟机和容器在很多方面上都有所不同,但主要是因为容器提供了一种虚拟化操作系统的方法,以便在单个操作系统实例上运行多个工作负载。而使用虚拟机,硬件进行虚拟化,以运行多个操作系统。
根据需求的不同,也就在容器和虚拟机之间进行取舍。