写点什么

容器会取代虚拟机吗?

  • 2022 年 1 月 11 日
  • 本文字数:2569 字

    阅读完需:约 8 分钟

容器会取代虚拟机吗?

虚拟化从根本上改变了数据中心的运作方式,这过去还不是很久。2002 年,VMware 发布了首款虚拟机管理程序 ESX Server 1.5,一定程度上引领了企业级虚拟机的主流应用。对于千禧一代来说,这一切都仿佛发生在昨天。


这项技术使基础设施的利用率发生了革命性的变化,用户可以在同一个硬件上运行多个操作系统,使硬件资源的应用最大化。随后,比虚拟机更年轻时尚、Z 世代也更熟悉的容器,在 2013 年随着 Docker 的发布而大放异彩,也刺激了容器主流应用产品的研发。容器允许多个孤立的应用程序共享同一个操作系统内核。


虽然虚拟机和容器的工作方式不同,但这两种技术非常相似。这也就产生了一个问题:容器会取代虚拟机吗?今天,我们来分析下这个问题。

虚拟机与容器的不同

虚拟机是由软件定义的计算机,运行在 Hypervisor(虚拟机监视器)之上,允许多个操作系统共享同一底层的物理硬件,并在相互隔离的情况下运行。Hypervisor 将底层硬件虚拟化,每个虚拟机都运行自己的操作系统(OS)。


在虚拟机之前,一台服务器仅能支持一个操作系统,用户无法实现在同一台服务器上运行不同操作系统下的业务应用,或者这些应用在运行时不会互相干涉。每个运行的业务应用,比如电子邮件或者 CRM,都必须拥有自己的(通常配置过高,利用率低)硬件集。有了虚拟机后,一台服务器就能同时支持多个操作系统和多个应用,大大降低了企业在硬件和硬件管理方面的开支。


容器同样是由软件定义的计算实例,但是它们在一个共享的主机操作系统上运行。容器将软件打包成可移植的、可执行的单元,具有所有必需的依赖关系,能够在任何地方运行,包括笔记本计算机、服务器、云端等。下表列出了虚拟机和容器的不同之处:


虚拟机容器
重量级轻量级
性能有限本机性能
每个虚拟机运行在自己的操作系统中所有容器都共享主机操作系统
硬件级虚拟化操作系统虚拟化
启动时间以分钟为单位启动时间以毫秒为单位
分配所需的内存需要更少的内存空间
完全隔离,因此更安全进程级隔离,可能不那么安全


因为无须拖动全部的操作系统代码,所以容器更加轻便(兆字节,相对于虚拟机的千兆字节),启动速度也比虚拟机更快。在一台服务器上,用户可以使用容器来运行比虚拟机多两到三倍的应用。


仅凭这一点,或许就可以说明容器是未来的趋势,而虚拟机则是旧闻。

容器会取代虚拟机吗?

容器是否会取代虚拟机,这个问题看起来简单,但并不容易作出预言。我们可以看一下支持虚拟机和支持容器的人分别都有哪些理由。

支持虚拟机的理由

尽管容器更小、更快,但容器永远不会杀死虚拟机,理由如下:


  1. 熟悉度和成熟度。尽管科技行业对新技术的接受很快,但虚拟机在许多组织中的应用已经非常成熟。大多数企业都有固定的流程、程序和团队来管理虚拟机的部署,包括备份和监控。虽然“我们一直在用的方式”并不总是继续做某件事的最佳理由,但是还有一个理论是“如果它没有坏,就不要去修复”。某个能够在虚拟机上正常工作的单体应用,为了保证其能在容器环境下工作,用户就必须对其进行重构,但有时这种努力并不值得。

  2. 拥有完整的操作系统功能。使用虚拟机与所有操作系统服务一起工作,有时比更协调的“Docker Compose”或具有不必要复杂性的 Kubernetes 集群更可取,特别是对于一些复杂的应用程序。

  3. 异质环境。虚拟机的作用就是可以运行多个操作系统。容器共享同一个操作系统内核,因此需要一个同质的环境。有一种观点认为,企业数据中心正朝着更加同质化的环境发展,以实现标准化,从而提高运营效率。但这种情况尚未大规模发生,许多企业仍然需要运行多个操作系统,并且在可预见的将来也会如此。

  4. 安全性。容器的安全性经常被虚拟机拥趸者攻击。虚拟机支持者认为,容器共享主机操作系统资源而更容易受到攻击,虚拟机则在其虚拟墙内包含操作系统。如果一个容器被攻击了,它可能会感染其他共享主机操作系统的容器。如果一个虚拟机被攻击,虚拟机、主机服务器和其他虚拟机之间则会形成一道额外的屏障。

  5. 两者不是非此即彼的,企业可以兼而有之。用户可以在虚拟机上运行容器,这样就可以让已经拥有虚拟机的企业能够采用容器。他们可以在不必完全放弃虚拟机的情况下,充分利用容器的速度和敏捷性。

支持容器的理由

容器也有很多优势,是什么让它们成为取代虚拟机的竞争者?容器的支持者通常持以下观点:


  1. 速度和可移植性。容器启动只需几秒钟,而虚拟机则需要几分钟,但容器带来的速度优势并不限于启动时间。容器解决了环境一致性问题,开发人员在配置环境和处理错误上花费的时间少很多。像 Docker 这样的容器引擎也有容器镜像库,加快了开发者们的工作,而像开放容器标准(Open Container Initiative,OCI)这样的项目已经制定了容器的标准,从而简化了部署。

  2. 可扩展性。通过 Kubernetes 或 Cycle.io 等容器编排器,容器可以根据流量需求自动扩展,并在需要的时候复制容器镜像,不需要的时候将其关闭。容器的小尺寸和启动速度意味着其扩展速度比虚拟机更快。

  3. 模块化。容器彻底改变了应用开发,使应用可以作为单独的微服务松散地耦合在一起进行开发。DevOps 和 CI/CD 实践大大加快了应用程序的交付速度。正如一位高级软件工程师所说,整个环境像乐高那样堆叠起来,这样的能力很强大。容器的小尺寸和可移植性意味着应用程序可以在小的组件中构建,这些部分可以堆叠在一起,构建一个完整的应用程序。

  4. 易于更新。为容器中微服务而构建的应用程序中的更新和重新部署,要比具有更新和停机需求的全功能操作系统更容易管理。

  5. 抽象的操作系统。由于容器对操作系统进行了抽象,所以在处理虚拟机化问题上,容器要比虚拟机简单得多。在 Mac OS 和 M1 操作系统中,虚拟化非常棘手,但是容器可以使虚拟环境在它们上面轻松运行。

定论

容器会在开发环境中取代虚拟机吗?似乎已经有定论了。但是容器会全面取代虚拟机吗?事实可能并非如此。


开发者不会再像以前那样构建一个单一的应用。通过使用容器,他们能够从以前环境的不一致中解脱出来,更多地关注在代码构建、创建更好的软件以及更快速地编写代码。容器在开发者中已经成为了一种主流的虚拟化技术。


但是,容器究竟是应用程序的传递还是基础结构,两者有很大的区别。虚拟机运行缓慢、可移植性较差而且很重,但在部署企业的基础设施和运行传统单体应用时,虚拟机依然是优先考虑的技术。比如,尽管容器是应用程序开发的首选技术,但其他领域的 IT 团队,比如教育行业,不大会愿意花时间来将其定制化的学生信息系统重构为微服务架构,这些企业也无法用一个容器来取代其为学生提供的数以千计的虚拟机。


最终答案是什么?在当今的数据中心里,容器和虚拟机器都占有一席之地。


原文链接:


https://www.backblaze.com/blog/will-containers-replace-virtual-machines/

2022 年 1 月 11 日 14:214273

评论 3 条评论

发布
用户头像
对于云厂商来说,虚拟机还是必须的吧
2022 年 01 月 17 日 11:03
回复
用户头像
几乎所有在捣鼓容器的人(开发级而不是应用级),看他们的研究方向,就是又重新回到基于虚拟机的容器去了,未来的方向很明确——全都要,虚拟机级别的资源隔离,容器级别的轻量化资源要求。什么时候能实现就不知道了
2022 年 01 月 16 日 11:08
回复
用户头像
无纸办公发展的再好也取代不了书法
2022 年 01 月 11 日 14:35
回复
没有更多了
发现更多内容

Spring-Spring整合MyBatis原理分析

魔曦

28天瞎写的第二百二十一天:争论 IBM AIX 版本号,只因好强?

树上

28天写作

与前端训练营的日子 --Week12

SamGo

学习

HDFS杂谈:Xattrs扩展属性

罗小龙

hadoop hdfs 28天写作

外星人?他们在哪儿呢?「幻想短篇 10/28」

道伟

28天写作

架构2期-第十三周作业(1)

浮生一梦

第十三周 2组 架构师训练营第2期

第 13 周 系统架构作业

心在那片海

长期主义是一种生活态度

JiangX

28天写作 价值 长期主义

第八周学习总结

Binary

SQL 正则表达式

.

28天写作

第13周作业总结

hunk

架构师训练营第2期

手写实现单例代码



产品第一周

骏马

什么是VXLAN

架构师训练营 4 期 第3周

引花眠

架构师训练营 4 期

产品经理训练营 - 第一章 - 作业

Jeremy

Week13 作业

evildracula

架构

万亿级数据库MongoDB集群性能数十倍提升及机房多活容灾实践

杨亚洲(专注mongodb及高性能中间件)

MySQL 数据库 mongodb 分布式数据库mongodb Qcon

架构师训练营第三周总结



Week3

oooh-la

第一周作业

Au revoir

2021年第4周工作学习计划

IT蜗壳-Tango

计划 七日更

Week 13 数据应用

evildracula

学习 架构

新名词意味着什么?

lidaobing

28天写作 名词

绩效管理,上下同心者胜(二)

一笑

管理 绩效 28天写作

第八作业

Binary

第13周作业

hunk

架构师训练营第2期

产品经理训练营 - 第一课 - 总结

Jeremy

对比不同公司产品岗位差异及其洞察

Geek_79e983

产品经理训练营

第 13 周 系统架构总结

心在那片海

十三周作业

落朽

容器会取代虚拟机吗?-InfoQ