容器是当今IT界最热门的话题之一,很大程度上归功于许多网络公司如Facebook和Twitter的采用。 在过去的两年中,包括亚马逊网络服务(AWS)和谷歌计算平台(GCP)在内的主要云计算提供商已经通过产品化服务提供了Docker容器。 在DevOps环境中,开发人员越来越多地使用容器,开发人员可以自动执行应用程序和工作负载部署 集装箱也被吹捧为提高整体基础设施利用率的一种手段,因为与虚拟机(VM)相比,它们的设计轻巧,减少了部署,拆卸,重新实例化或迁移的时间。 在这篇文章中,我将评估使用容器的优势。
为什么使用容器? 3主要优点
去年在亚特兰大举行的OpenStack峰会上,来自Parallels的一位代表阐述了容器相比虚拟机的三大主要技术优势。 它们包括速度,便携性和密度:
1.速度
在容器中部署的应用程序比在虚拟机中部署的应用程序更有弹性完全引导整个VM(包括操作系统(OS)和内核)通常可能需要几秒钟甚至几分钟的时间。另一方面,容器可以以毫秒为单位进行部署,因为它们共享一个操作系统,只需要加载应用程序所需的某些软件包。
2.便携性
Docker最大的好处之一是可移植性。 Docker容器可以在公有Amazon EC2实例或私有OpenStack主机中运行。如果主机操作系统在公共云实例中支持生产中的Docker容器,则它可以很容易地部署到开发人员的VirtualBox环境中,以保持一致性和功能性。这使您可以从基础设施层获得高层次的抽象,并可以与各种配置管理工具(如Chef,Puppet和Ansible)一起使用。
3.密度
容器还可以在基础架构内实现更好的工作量密度。容器每个实例的内存开销较少,因为每个应用程序都加载到跨所有容器共享的主机操作系统中。操作系统和内核不需要为每个容器加载。因此,更多的应用程序和工作负载可以被挤压到相同的硬件或基础设施上。
虚拟机“缺点”
传统的虚拟机管理程序技术造成了对单个虚拟机功能的误解。如果虚拟机可以执行或展示与容器相同的属性或属性呢?让我们来分析上面提到的每一点,看看虚拟机在真正的超融合基础设施领域如何像集装箱一样行事。
1.速度
虚拟机部署和启动缓慢的原因之一是,存储系统通常与计算系统断开连接。通常使用外部存储设备(例如,SAN)来存储VM映像,这导致需要从SAN远程引导或在引导之前将数据复制到服务器的本地存储器上。
超融合体系结构通过将存储物理距离计算实例更近,为配置速度带来了极大的改进。智能存储供应技术(例如重复数据删除和自动精简配置)为基于商品的硬件带来了类似于SAN的功能,而直接连接存储的访问则显着降低甚至消除了实际部署中的存储瓶颈。由于操作系统需要启动,所以还是有一些开销,但是也有一些技术可以缩小虚拟机的性能差距。
2迁移
容器支持者会争辩说,工作负载迁移是不必要的,如果您的应用程序本质上是向外扩展并由单个微服务组成的,那么他们可能是正确的。问题是,当今世界上几乎所有的数据中心仍然有“遗留”的应用程序,无论出于何种原因都不能重新构建。在这些情况下,VM迁移是绝对关键的功能。虚拟机实时迁移的主要用例是快速将有状态的工作负载从一台主机移动到另一台主机,而不会造成任何停机。例如,在计划维护,节点故障或重新平衡基础架构以维护SLA时,这是非常必要的。
另外,运行在虚拟机上的容器也可以受益于这种能力。当智能私有云基础设施检测到硬件问题时,可以无缝地将承载数百个容器的虚拟机迁移到另一个主机,而不需要产生新的容器或出现停机时间,这比高级业务流程框架可以检测到的要快得多。
3密度
在内存管理方面,今天的虚拟化技术存在一个问题。虽然现在可以在机器上过度使用内存,但通常会避免这种情况,因为积极的内存过度使用的后果远大于好处。然而,50-80%的典型虚拟机分配的内存从不使用,因为实例的大小不正确或应用程序的内存消耗本质上是突发的。容器不会遭受同样的问题。它们使用的内存少于虚拟机,因为它们固有地共享主机内核和操作系统。然而,对于虚拟机,可以通过实时跟踪资源利用率来解决,以便执行更好的调度,工作负载放置和快速的工作负载重新平衡。
如果您的基础架构具有足够的智能性,可以为群集中的每个虚拟机执行内存页面访问并对其进行跟踪,则可以利用此洞察力来提高密度并为您的工作负载提供更一致的性能。
最后的笔记
每一项技术进步都有利有弊。 像Stratoscale这样的厂商可以提供解决方案,缩小容器和传统虚拟化平台之间的差距。
话虽如此,使用容器或虚拟机的决定归结为部署方法的选择。 容器可能非常适合那些倾向于部署新型Web应用程序的组织,这些应用程序本身是为扩展架构而设计的。 另一方面,一些组织仍然运行需要自定义资源的应用程序,包括无法在基于容器的框架中部署的传统应用程序。
虚拟机和容器在IT中都占有一席之地。 所需要的是一个统一的基础架构,可以处理他们两个。 为了实现这一点,基础设施需要随着时间的推移变得越来越智能化,以便在这两种技术之间提供更好的密度,弹性和可移植性。