基础知识:容器vs. vm:您的工作负载的最佳选择是什么?

爱德华Kisller
2023-01-22 11:05

用户添加图片

容器和虚拟机(vm)并不是什么新鲜事。资源分区和多任务的概念可以追溯到20世纪60年代,vm和容器在接下来的20年里不断发展。但这两种技术只是最近才开始流行起来。虚拟机是21世纪初第一个成为主流的。然后,紧接着推出码头工人2013年,采用集装箱也开始暴涨。

本指南比较了这些技术,以便您可以根据工作负载对应用程序部署策略做出明智的选择。但首先,让我们简要地重新了解一下这两种资源隔离方法。

什么是虚拟机?

虚拟机是一个模拟的操作环境,它充当主机中的虚拟计算机,其行为就像物理硬件一样。主机使用虚拟机监控程序来模拟虚拟机,这些虚拟机是相互隔离的自治系统,也与底层主机隔离。

hypervisor可以在一台物理机上运行多个虚拟机。这有助于更有效地利用基础设施。此外,管理程序支持一系列客户操作系统,因此您可以在相同的硬件上运行不同版本的Windows Server和Linux发行版。

用户添加图片

什么是容器?

容器还为您的工作负载提供了隔离的操作环境,但使用了不同的抽象资源的方法。2022世界杯阿根廷预选赛赛程它们既不使用管理程序,也不使用成熟的客户操作系统(OS)。相反,他们通过共享内核主机操作系统的其他容器。

更重要的是,他们只打包那些资源(例如,2022世界杯阿根廷预选赛赛程安装依赖关系代码你的应用程序实际需要的。因此,容器要比虚拟机紧凑得多。

用户添加图片

虚拟机和容器如何协同工作
典型的设置是在一个裸金属服务器上运行多个VM,其中每个VM运行多个容器。这最终实现了资源的最佳利用。2022世界杯阿根廷预选赛赛程这是所有基于云的服务的默认设置。下面几节将描述虚拟机和容器之间的关系。

性能

由于容器避免了硬件模拟的资源开销,并且是更精简的应用程序环境,因此它们往往比vm提供更好的整体性能。它们还可以更快地停止和启动,使它们比vm更能响应波动的扩展需求。然而,由于大多数容器化工作负载目前都托管在基于vm的基础架构上,因此能够发挥其性能潜力的部署相对较少。

有关容器用例的更多信息在这里

成本效率

虚拟机有助于减少承载工作负载所需的物理机器数量,并降低成本。然而,容器通常具有更低的基础设施占用。您不仅可以在裸金属服务器上安装更多容器,通常还可以在VM上安装多个容器。因此,无论从哪个角度来看,容器都可以帮助您从硬件中获得更多。

此外,容器特别适合于基于松散耦合服务集群的云原生应用程序。虽然您也可以使用虚拟机来托管您的microservices,容器为您提供了更细粒度的资源分配控制。因此,通过良好的集群管理,您可以更有效地利用云资源,并减少每月的现收现付账单。2022世界杯阿根廷预选赛赛程

用户添加图片

可移植性

打包到容器中的应用程序往往更易于移植,因为它们远没有虚拟机部署的完整服务器环境那么麻烦。您可以在具有不同配置的不同Linux机器上运行它们,前提是每个主机操作系统的内核与容器环境兼容。

但是,如果没有额外的虚拟化层,Linux容器无法在Windows主机上运行。同样,基于windows的容器不能在Linux主机上运行。相比之下,使用虚拟机,您可以在Windows上运行基于linux的应用程序,反之亦然。尽管如此,您的应用程序仍将绑定到相同的客户操作系统。

新的容器类型,例如Windows Hyper-V容器它们携带自己的内核,类似于虚拟机的轻量级版本。它们旨在提高容器环境与其宿主之间的隔离级别。然而,该技术最终可能导致Linux和Windows系统之间的完全容器可移植性。

最后,可移植性还取决于容器化应用程序的性质,例如用于持久存储的配置。它还将取决于所使用的特定容器平台。例如,在其他类型的容器系统上运行Docker容器可能是不可能的。

安全

容器和虚拟机使用不同的方法隔离应用程序。因此,它们提供了不同的安全优势。下图显示了可以加强容器化应用程序整体安全性的两级隔离。第一级是虚拟机的分离,第二级是虚拟机内部的隔离容器。

容器化应用程序通常是划分的,其中容器边界使安全漏洞更难在整个基础设施中传播。由于容器是更精简的环境,只提供应用程序所需的资源,因此它们的攻击面也更小。2022世界杯阿根廷预选赛赛程

另一方面,管理程序层确保vm可以在应用程序和主机环境之间提供更高级别的隔离。在单个VM中,容器仍然共享相同的内核,这是一个风险因素。但是,容器引擎中的安全层可以缓解这一问题。这突出说明了为什么如此多的容器化工作负载运行在vm上,而不是直接运行在主机基础设施上,因为这种部署方法既提供了隔离形式,又提供了增强的安全优势。

有关容器引擎安全级别的更多信息在这里

用户添加图片

混合部署方法提供了两全其美的方法

容器vs虚拟机

容器

虚拟机

抽象的类型

仅应用程序环境

全硬件仿真

主要用例

Microservices

成熟的服务器

启动时间

温和的

可移植性

受主机操作系统限制

受guest OS限制

安全

服务之间的健壮保护

强大的主机保护

了解容器更多信息

发布日期:2020年7月9日

最后更新:2021年3月17日