虚拟机 (VM) 和容器是互补且相似的 - 两者都提高了 IT 效率、应用程序可移植性并增强了 DevOps。但是,了解它们之间的区别是开发敏捷、云原生、应用程序驱动战略的关键组成部分。
- VM通过让组织充分利用服务器并促进有限的工作负载可移植性来解决基础架构问题。
- 容器通过改进DevOps、启用微服务、增加可移植性和进一步提高资源利用率来解决应用程序问题。
容器和虚拟机的核心区别是什么?
VM 包括客户操作系统 (OS) 及其应用程序和应用程序依赖项的所有代码,这些代码以前在单个服务器上或从服务器池中运行。VM 映像的大小通常以千兆字节为单位。多个 VM 可以存在于单个物理服务器上,即使它们运行在不同的操作系统上。虚拟机从底层硬件中抽象出服务器,并且通常会在其整个使用寿命期间持续存在。
容器共享主机操作系统并且仅包含应用程序及其依赖项。容器映像的大小通常以兆字节为单位。在单个服务器上运行的每个容器都共享相同的底层操作系统。因此,容器可以在几毫秒内启动,并且对于实例必须随着需求的变化而启动和关闭的临时用例更有效。
总而言之,VM 和容器有何不同?
尽管容器和虚拟机都有助于提高 IT 资源的利用率,但各有利弊。虚拟机已经存在了几十年,它允许企业将运行不同应用程序的多台服务器组合到单个物理服务器上,即使它们运行不同的操作系统。这大大节省了服务器硬件和软件,因为过去在多台服务器上运行的现在运行在单个服务器上。虚拟机也是大多数云服务的基础。AWS、Azure 和其他公共云使用 VM 作为其标准产品之一。但是,由于它们将整个服务器封装在每个虚拟机中,VM 所需的 CPU 和 RAM 量可能会变得笨拙,并限制单个服务器上可以存在的 VM 数量。
自 2013 年 Docker 发布以来,容器迅速普及,部分原因是为了应对虚拟机消耗的大量开销。由于容器运行在服务器的操作系统上,它们共享单个操作系统实例和其他二进制文件和库,因此容器只需要包含应用程序代码,无论是单个单体应用程序的形式,还是捆绑在一个或多个容器中的微服务的形式,包含业务功能。
因此,虽然 VM 让组织可以在单个硬件上运行多个虚拟服务器——不管它们的操作系统如何,容器提供了轻量级、高密度的应用程序虚拟化,能够在几秒钟内启动和关闭应用程序和实例,以及一些措施在它们自己的容器中分离应用程序所固有的安全性。
虚拟化的优缺点是什么?
虚拟机优点:
- 数十年的虚拟化专业知识支持访问一组强大的 VM 管理和安全工具
- VM 提供了在单个基础架构上运行需要不同操作系统的多个应用程序的能力
- VM 模拟整个计算环境,包括所有操作系统资源
- VM 简化了本地和基于云的平台之间的可移植性和迁移
- 有一个庞大的、成熟的 VM 生态系统和市场,其中包括 VMware 等行业领导者
虚拟机缺点:
- VM 映像通常消耗千兆字节,因此需要更长的时间来备份或在平台之间迁移
- 因为它们封装了包括操作系统在内的整个服务器,所以物理服务器可以支持比容器更少的虚拟机
- 虚拟机启动时间可能需要几分钟
容器的优缺点是什么?
容器优点:
- 容器比虚拟机更轻量级,因为它们的图像以兆字节而不是千兆字节为单位
- 容器需要更少的 IT 资源来部署、运行和管理
- 容器在几毫秒内启动
- 由于它们的数量级较小
- 与虚拟机相比,单个系统可以托管更多的容器
容器缺点:
- 所有容器必须在相同的操作系统上运行——不能混合和匹配操作系统或版本
- 容器可能不如虚拟机安全,因为底层操作系统是共享的
- 容器是一项较新的技术,生态系统仍在不断发展
传统与新兴 IT 实践中如何使用容器?
虚拟机已经并将继续在将遗留应用程序迁移到云和混合环境中发挥作用。由于 VM 的成熟度,对于那些已经融入围绕 VM 的 IT 架构的组织而言,它们具有很高的舒适度以及水平或惯性。因此,VM 将继续成为许多持久的、单一的、企业应用程序的首选抽象解决方案,尤其是那些不经常更新的应用程序。
但是,容器适合现代实践和用例,例如敏捷、DevOps 环境中的 CI/CD。容器增强了应用程序在截然不同的配置之间的可移植性,因此在笔记本电脑上开发并在沙盒中测试的应用程序可以在云中运行,无需进行任何更改即可支持所有三种环境。容器还提供近乎无限的可扩展性。将用户交互与后端处理分开的基于微服务的应用程序允许前端和后端分别扩展,而轻量级容器意味着几乎可以根据需要即时启动新实例。此外,采用微服务方法进行开发鼓励在多个应用程序和业务流程之间共享通用的微服务例程,从而进一步提高开发人员的效率。
虚拟机在新兴 IT 实践中的角色如何转变?
随着机器学习和人工智能 (ML/AI) 应用程序深入企业,这些资源密集型应用程序将有利于部署虚拟机。此外,需要更多边缘计算能力的新网络架构(如 5G)将有利于虚拟机来完成这些软件定义网络的繁重工作。
容器将在需要可扩展性的现代、面向客户的应用程序和 Web 服务的世界中茁壮成长,这要归功于其近乎瞬时的启动时间,并且容器作为开发平台超越了,因为编码人员不再需要担心如何开发基础设施因部署基础设施而异。最后,由于容器最初设计为瞬态的,因此它们很适合网络守护程序、缓存和 Web 服务功能。
容器会取代虚拟机,还是相互补充?
容器和虚拟机都将继续发挥重要作用。容器可以在虚拟机上运行,使组织能够利用其现有工具进行自动化、备份和监控。VM 上的容器使 IT 能够使用现有的精通 VM 的团队来管理容器化环境。随着企业寻求以新的方式利用其基础架构或云的力量来支持重型应用程序和网络工作负载,虚拟机将拥有新的用例。