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