基础知识:容器vs. vm:您的工作负载的最佳选择是什么?
容器和虚拟机(vm)并不是什么新鲜事。资源分区和多任务的概念可以追溯到20世纪60年代,vm和容器在接下来的20年里不断发展。但这两种技术只是最近才开始流行起来。虚拟机是21世纪初第一个成为主流的。然后,紧接着推出码头工人2013年,采用集装箱也开始暴涨。
本指南比较了这些技术,以便您可以根据工作负载对应用程序部署策略做出明智的选择。但首先,让我们简要地重新了解一下这两种资源隔离方法。
什么是虚拟机?
虚拟机是一个模拟的操作环境,它充当主机中的虚拟计算机,其行为就像物理硬件一样。主机使用虚拟机监控程序来模拟虚拟机,这些虚拟机是相互隔离的自治系统,也与底层主机隔离。
hypervisor可以在一台物理机上运行多个虚拟机。这有助于更有效地利用基础设施。此外,管理程序支持一系列客户操作系统,因此您可以在相同的硬件上运行不同版本的Windows Server和Linux发行版。
什么是容器?
容器还为您的工作负载提供了隔离的操作环境,但使用了不同的抽象资源的方法。2022世界杯阿根廷预选赛赛程它们既不使用管理程序,也不使用成熟的客户操作系统(OS)。相反,他们通过共享内核主机操作系统的其他容器。
更重要的是,他们只打包那些资源(例如,2022世界杯阿根廷预选赛赛程安装,依赖关系和代码你的应用程序实际需要的。因此,容器要比虚拟机紧凑得多。
性能
由于容器避免了硬件模拟的资源开销,并且是更精简的应用程序环境,因此它们往往比vm提供更好的整体性能。它们还可以更快地停止和启动,使它们比vm更能响应波动的扩展需求。然而,由于大多数容器化工作负载目前都托管在基于vm的基础架构上,因此能够发挥其性能潜力的部署相对较少。
有关容器用例的更多信息在这里.
成本效率
虚拟机有助于减少承载工作负载所需的物理机器数量,并降低成本。然而,容器通常具有更低的基础设施占用。您不仅可以在裸金属服务器上安装更多容器,通常还可以在VM上安装多个容器。因此,无论从哪个角度来看,容器都可以帮助您从硬件中获得更多。
此外,容器特别适合于基于松散耦合服务集群的云原生应用程序。虽然您也可以使用虚拟机来托管您的microservices,容器为您提供了更细粒度的资源分配控制。因此,通过良好的集群管理,您可以更有效地利用云资源,并减少每月的现收现付账单。2022世界杯阿根廷预选赛赛程
可移植性
打包到容器中的应用程序往往更易于移植,因为它们远没有虚拟机部署的完整服务器环境那么麻烦。您可以在具有不同配置的不同Linux机器上运行它们,前提是每个主机操作系统的内核与容器环境兼容。
但是,如果没有额外的虚拟化层,Linux容器无法在Windows主机上运行。同样,基于windows的容器不能在Linux主机上运行。相比之下,使用虚拟机,您可以在Windows上运行基于linux的应用程序,反之亦然。尽管如此,您的应用程序仍将绑定到相同的客户操作系统。
新的容器类型,例如Windows Hyper-V容器它们携带自己的内核,类似于虚拟机的轻量级版本。它们旨在提高容器环境与其宿主之间的隔离级别。然而,该技术最终可能导致Linux和Windows系统之间的完全容器可移植性。
最后,可移植性还取决于容器化应用程序的性质,例如用于持久存储的配置。它还将取决于所使用的特定容器平台。例如,在其他类型的容器系统上运行Docker容器可能是不可能的。
安全
容器和虚拟机使用不同的方法隔离应用程序。因此,它们提供了不同的安全优势。下图显示了可以加强容器化应用程序整体安全性的两级隔离。第一级是虚拟机的分离,第二级是虚拟机内部的隔离容器。
容器化应用程序通常是划分的,其中容器边界使安全漏洞更难在整个基础设施中传播。由于容器是更精简的环境,只提供应用程序所需的资源,因此它们的攻击面也更小。2022世界杯阿根廷预选赛赛程
另一方面,管理程序层确保vm可以在应用程序和主机环境之间提供更高级别的隔离。在单个VM中,容器仍然共享相同的内核,这是一个风险因素。但是,容器引擎中的安全层可以缓解这一问题。这突出说明了为什么如此多的容器化工作负载运行在vm上,而不是直接运行在主机基础设施上,因为这种部署方法既提供了隔离形式,又提供了增强的安全优势。
有关容器引擎安全级别的更多信息在这里.
混合部署方法提供了两全其美的方法
了解容器更多信息
发布日期:2020年7月9日
最后更新:2021年3月17日
