容器技术在云中热潮将持续,但它并非完美
Docker容器并不缺乏IT方面的技术支持。但是其诸如对Linux的依赖这类的缺陷,让Docker在整个云计格局中的定位不够清晰。
在了解云的过程中不关心虚拟机监控程序和虚拟机是不可能的,虚拟化是云计算的核心。对于大多数情况,这代表了基于虚拟机监控程序的完全虚拟化,一个主机操作系统和一个虚拟机监控程序运行VM分区,像任何独立的服务器一样,有自己的操作系统和中间件。然而,虚拟化技术的涵盖面很广,这在云中是很有价值的。其中包含着一个普遍的虚拟化模型—容器技术。
在这个容器模型中,服务器运行通过构建半自治的容器来加载应用的操作系统。这些应用共享操作系统或主机,这样服务器不需要为每一个VM来运行单独的操作系统。容器在独立的VM和简单的多道程序设计之间提供了某种程度的应用隔离,但不是完全隔离。
容器通常是一种更适用于私有云和一些公有云应用的解决方案。当今最流行的容器架构Docker也许就是最完美的平台。
Docker狂热冲击云
Docker是一个容器管理系统,能够自动化的创建容器来运行应用/组件。它的基本形式,即使用一组API管理这些容器,可以从模板或者命令构建。Docker正在不断进化,并且现在已经可以提供编排工具来部署组件。
理论上我们可以在任何支持类似容器分区的OS上创建一个基于容器的系统,但是Docker使用的是Linux的容器工具。正因如此,Docker容器只运行特定Linux的应用和组件。它可以运行在一个不同的OS主机管理的虚拟机上,但它需要确保那个虚拟机里有一个Linux的客户操作系统来为那些容器提供服务,并且必须只能运行Linux的应用。
Windows对于Docker的支持采用Docker嵌入到虚拟机中的途径。在Linux主机之外使用Docker很复杂并且很多用户觉得增加的复杂度超过了易用性。甚至即便用户在一个非Linux的主机上运行Docker容器,他们仍然受限于只能运行Linux的应用。在Windows服务器上托管Docker容器的能力对于用户很有价值,因为Windows服务器承诺会大量增加许多基于Linux的应用。
基于VM的虚拟化和云计算拥有隔离的优点,对于公有云和服务器整合很有帮助。构建云应用而不是将应用迁移到云降低了隔离级别的支持需求。企业能够在公有云VM上,数据中心或者甚至是客户端设备托管容器。Docker的新业务流程编排工具可以部署基于容器的组件并将他们融合起来支持工作流。这些工具可以用于混合云,轻松的支持故障转移的功能。
容器体积小,灵活,这使得它们非常适合于负载弹性或者按需添加和删除功能的动态应用。将容器架构加载到裸机或者一个VM上所需要的机器镜像易于开发并且具备高度可移植性。载入到容器中的应用镜像由于它们依赖于主机操作系统和中间件服务,也会很容易开发和部署。
容器热潮持续,但也并非十全十美
容器技术的日益普及不代表它是完美的。虚拟机是最适合公有云多租户应用的,因为要跨越虚拟机边界来攻击相邻的应用比在容器之间发起攻击要困难得多。此外,还缺少对于防止一个容器获取过量的资源而影响到其他应用方面的保护。要解决这些问题,可以在VM里运行容器和Docker,这正是Docker/VMware联盟的基础。
也有一些提议要发展虚拟机,让它们的行为更像容器。这些通常被称为微型VM。 比如说,Xen Mirage使用一个特制内核来提供某种应用程序隔离,而完全避免了操作系统和中间件复制。
对于试图在容器技术和虚拟机之间做出抉择的企业来说,决定的因素可能是应用结构和来源。通过服务器整合创造的单一应用是大型且持久的,这样应用就很难从容器化上获得很多益处。容器非常适合于那些基于SOA/ REST组件化原则的应用。这些应用程序的组件相对较小,分布广泛,在云之间来回移动,动态扩展或偶尔运行。一个运行Linux容器的决定其实就是运行Docker的决定。