2016-07-09 40 views
-1

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

我想到的第二种方法是你有一个功能强大的虚拟机,并且最重要的是你有容器管理器,它将计算能力分配给容器VM 1:N containers - 但是没有虚拟机的虚拟机上运行的应用程序有什么区别?容器? Woulden的容器管理只会通过不必要的开销窃取你的计算能力?除此之外,价格是线性缩放的(例如,单个单位的价格与计数保持一致),因此拥有2台机器与具有两个容器的机器相同,性能是双倍。

如果您可以请在任何云服务中提供一些真正有用的示例。

回答

0

容器就是让您的硬件获得更多的密度 - 也就是说,能够根据您拥有的资源量(因此可以节省大约$)更高效地运行您的服务。

委托人基于容器与虚拟机不一样的事实,他们没有自己的操作系统副本等,他们是一个更加浓缩的沙箱,并由集装箱技术进行管理在顶部,它控制容器访问的资源。

这也有助于能够更高效地扩展和更有效地分配(弹性),因为如果设计系统使得一个容器运行一种类型的服务,容器管理层可以协调多少个实例每项服务都可以在任何时候分解或分发。将其与SOA架构进行比较,SOA架构通常(并非总是)按层而不是按服务进行扩展 - 即。您的Web层将是一组运行您的Web服务器和服务的VM,运行多个后端服务的应用程序层等等。使用容器不需要做出区分,并且您可能有100多个可独立扩展的层。

完美适合云,您只需支付所购买的东西 - 应用程序套件越精细,运行效率就越高,因此您需要消耗的资源就越少。

集装箱管理技术,那么还可以管理弹性,网络化,工作​​负载的分布,规模,等等等等......

对于较小的应用程序或工作负载,你可能通常在一个或两个虚拟机的主机(或者一个云服务或VM Scale设置,如果你希望它自动扩展),使用容器可能花费更多 - 通常你会希望容纳最少3个Vms的容器通过分配硬件提供弹性,其中一些资源将被集装箱的管理。因此,更合适的用例是具有许多不同服务组件的较大系统,其中每个服务组件随着时间的推移可能会有不同的需求。根据技术的不同,通常实际的VMS数量可能会增加,例如3到20之间,但通常每个节点都有多个容器 - 例如,每个虚拟机上有20个虚拟机,因此在使用3个VMS的情况下,您可以在扩展虚拟机之前托管3 x 20 = 60个服务实例。您不必预先确定哪些服务类型为。所以你可能会从3个虚拟机开始,只有3个服务 - Web前端,计算服务和数据访问服务。随着需求的增长,最终可能会有10个前端服务实例,35个计算和5个数据访问层 - 使用60个容器中的10 + 35 + 5 = 50个实例。

有一个良好的视觉画面来形容集装箱这里的密度: Linux Journal

+0

所以“容器管理层”在多个虚拟机蔓延,你可以扩展虚拟机在它之下? –

+0

因此,这种方法最适用于您有一些服务本身无法真正扩展的情况(例如,它只有单线程)。但是当你有一个能够消耗虚拟机的所有资源(核心)的应用时,你会得到相同的结果,并产生新的虚拟机? –

+0

是的,一个很好的例子就是一个消耗队列工作量的服务。本身并不需要创建线程,因为每个服务实例都会在新的容器实例上运行 –