你好,我是悟空呀~
虽然虚拟机和容器的工作方式不同,但这两种技术非常相似。这也就产生了一个问题:容器会取代虚拟机吗?今天,我们来分析下这个问题。
原文链接:https://www.infoq.cn/article/gaJY2cSvAkoY63XC3Bl6?utm_source=related_read&utm_medium=article 英文出处:https://www.backblaze.com/blog/will-containers-replace-virtual-machines/ 作者:Molly Calancy 译者:Sambodhi
虚拟化从根本上改变了数据中心的运作方式,这过去还不是很久。2002 年,VMware 发布了首款虚拟机管理程序 ESX Server 1.5,一定程度上引领了企业级虚拟机的主流应用。对于千禧一代来说,这一切都仿佛发生在昨天。
这项技术使基础设施的利用率发生了革命性的变化,用户可以在同一个硬件上运行多个操作系统,使硬件资源的应用最大化。随后,比虚拟机更年轻时尚、Z 世代也更熟悉的容器,在 2013 年随着 Docker 的发布而大放异彩,也刺激了容器主流应用产品的研发。容器允许多个孤立的应用程序共享同一个操作系统内核。
虚拟机是由软件定义的计算机,运行在 Hypervisor(虚拟机监视器)之上,允许多个操作系统共享同一底层的物理硬件,并在相互隔离的情况下运行。Hypervisor 将底层硬件虚拟化,每个虚拟机都运行自己的操作系统(OS)。
在虚拟机之前,一台服务器仅能支持一个操作系统,用户无法实现在同一台服务器上运行不同操作系统下的业务应用,或者这些应用在运行时不会互相干涉。每个运行的业务应用,比如电子邮件或者 CRM,都必须拥有自己的(通常配置过高,利用率低)硬件集。有了虚拟机后,一台服务器就能同时支持多个操作系统和多个应用,大大降低了企业在硬件和硬件管理方面的开支。
容器同样是由软件定义的计算实例,但是它们在一个共享的主机操作系统上运行。容器将软件打包成可移植的、可执行的单元,具有所有必需的依赖关系,能够在任何地方运行,包括笔记本计算机、服务器、云端等。下表列出了虚拟机和容器的不同之处:
虚拟机 | 容器 |
---|---|
重量级 | 轻量级 |
性能有限 | 本机性能 |
每个虚拟机运行在自己的操作系统中 | 所有容器都共享主机操作系统 |
硬件级虚拟化 | 操作系统虚拟化 |
启动时间以分钟为单位 | 启动时间以毫秒为单位 |
分配所需的内存 | 需要更少的内存空间 |
完全隔离,因此更安全 | 进程级隔离,可能不那么安全 |
因为无须拖动全部的操作系统代码,所以容器更加轻便(兆字节,相对于虚拟机的千兆字节),启动速度也比虚拟机更快。在一台服务器上,用户可以使用容器来运行比虚拟机多两到三倍的应用。
仅凭这一点,或许就可以说明容器是未来的趋势,而虚拟机则是旧闻。
容器是否会取代虚拟机,这个问题看起来简单,但并不容易作出预言。我们可以看一下支持虚拟机和支持容器的人分别都有哪些理由。
尽管容器更小、更快,但容器永远不会杀死虚拟机,理由如下:
容器也有很多优势,是什么让它们成为取代虚拟机的竞争者?容器的支持者通常持以下观点:
容器会在开发环境中取代虚拟机吗?似乎已经有定论了。但是容器会全面取代虚拟机吗?事实可能并非如此。
开发者不会再像以前那样构建一个单一的应用。通过使用容器,他们能够从以前环境的不一致中解脱出来,更多地关注在代码构建、创建更好的软件以及更快速地编写代码。容器在开发者中已经成为了一种主流的虚拟化技术。
但是,容器究竟是应用程序的传递还是基础结构,两者有很大的区别。虚拟机运行缓慢、可移植性较差而且很重,但在部署企业的基础设施和运行传统单体应用时,虚拟机依然是优先考虑的技术。比如,尽管容器是应用程序开发的首选技术,但其他领域的 IT 团队,比如教育行业,不大会愿意花时间来将其定制化的学生信息系统重构为微服务架构,这些企业也无法用一个容器来取代其为学生提供的数以千计的虚拟机。
最终答案是什么?在当今的数据中心里,容器和虚拟机器都占有一席之地。