Cloud 云中的容器有什么好处?

Cloud 云中的容器有什么好处?,cloud,Cloud,所以我一直在试图弄清楚容器及其在基于云的服务(AWS Azure等)中的使用,但我真的不明白为什么要使用它们。您可以在虚拟机上部署应用程序(或服务),也可以在容器中部署应用程序(或服务),但它仍然只在某些环境中运行Nx 1:1 VM-to-container 我想到的第二种方法是,你有一个功能强大的VM,最重要的是你有一个容器管理器,它将计算能力分配给容器vm1:N容器——但是在没有容器的VM上运行的应用程序有什么不同呢?难道容器管理不只是通过不必要的开销窃取您的计算能力吗?除此之外,通常情况下

所以我一直在试图弄清楚容器及其在基于云的服务(AWS Azure等)中的使用,但我真的不明白为什么要使用它们。您可以在虚拟机上部署应用程序(或服务),也可以在容器中部署应用程序(或服务),但它仍然只在某些环境中运行
Nx 1:1 VM-to-container

我想到的第二种方法是,你有一个功能强大的VM,最重要的是你有一个容器管理器,它将计算能力分配给容器
vm1:N容器
——但是在没有容器的VM上运行的应用程序有什么不同呢?难道容器管理不只是通过不必要的开销窃取您的计算能力吗?除此之外,通常情况下,价格是线性缩放的(例如,单个单元的价格与计数保持相同),因此拥有两台机器与拥有一台带有两个容器的机器相同,并且性能加倍


如果您能提供一些对任何云服务都非常有用的示例。

容器都是关于提高硬件密度的,也就是说,在您拥有大量资源的情况下,能够更高效地运行您的服务(从而节省一些美元)

其原理是基于这样一个事实:容器与VM不同,它们没有自己的操作系统副本,等等,它们是一个更加精简的沙箱,由顶部的容器化技术管理,该技术控制容器可以访问哪些资源

这也有助于更有效地扩展和分发(弹性),因为如果您将系统设计为一个容器运行一种类型的服务,那么容器管理层可以协调在任何时候可以旋转或分发每个服务的多少实例。将此与SOA架构进行比较,SOA架构通常(并非总是)在层而不是服务中进行扩展—即,您的web层将是一组运行web服务器和服务的VM,运行多个后端服务的应用层,等等。对于容器,您不需要进行区分,您可能有100个独立可扩展的层

非常适合于云计算,在云计算中,您只需为您的消费付费—您的应用程序套件越细粒度,运行效率就越高,因此您需要消耗的资源就越少

然后,容器管理技术还可以管理弹性、网络、工作负载分布、规模等

对于较小的应用程序或工作负载,您通常可以在一个或两个虚拟机上托管(或者如果希望自动扩展,可以使用云服务或虚拟机规模集),使用容器的成本可能会更高-通常您希望至少有3个虚拟机托管您的容器,以通过硬件分发提供弹性,其中一些资源将被容器的管理所消耗。因此,一个更合适的用例是具有许多不同服务组件的更大系统,每个服务组件随着时间的推移可能有不同的需求

根据技术的不同,实际虚拟机的数量通常可以扩展,比如说在3到20之间,但通常每个节点都有多个容器-例如每个虚拟机上有20个容器,因此有了3个虚拟机,您就可以在扩展虚拟机之前承载3 x 20=60个服务实例。您不必预先确定这60项服务的类型。因此,您可以从3个虚拟机开始,它们只承载3个服务—一个web前端、一个计算服务和一个数据访问服务。随着需求的增长,您可能会得到10个前端服务实例、35个计算实例和5个数据访问层实例—使用60个容器中的10+35+5=50个

这里有一个很好的视觉图片来描述容器的密度:

所以“容器管理层”分布在多个虚拟机上,您可以扩展其下的虚拟机?因此,这种方法在某些服务无法自行扩展(例如,它只是单线程)的情况下非常有用。但是,当你有一个能够消耗VM所有资源(核心)的应用程序时,你会得到与生成新VM相同的结果,对吗?是的,一个很好的例子是一个从队列中消耗工作负载的服务。它本身不需要创建线程,因为每个服务实例都将在一个新的容器实例上运行。非常感谢!