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