有很多关于容器的文章,尤其是关于Docker和Open Container Project(开源容器项目)的文章,人们认为这是一个节奏非常快的技术,但是自从Linux诞生以来它就就存在了。早期,我们称之为cgroups(控制族群),后来称为userspace(用户空间),其基本概念是在操作系统环境中的进程分块。
Docker进一步强化了这个概念。上个月,业界同Linux基金会发起了开源容器项目。其赞助商有Apcera、亚马逊AWS、思科、 CoreOS、 Docker,、EMC、Fujitsu(富士通)、Google、高盛集团、惠普、华为、 IBM、 Intel、Joyent、 Pivotal、 Linux基金会、Mesosphere、微软、Rancher、 Red Hat 以及 VMWare。这个项目的关键并不是把概念切分成多个实现。在这篇博文中,我将讨论一下容器的影响以及未来。
把容器称之为 “超越虚拟化”最好不过了,Linux和微软Windows这两个主要的操作系统,在创建容器方面已经占有了一席之地。它最简单的形式是,容器允许开发人员将所有的组件和相关的软件包放入一个“盒子”中,使得一个应用程序能从基本操作系统中抽取出来,并在一个隔离的环境中运行。毫无疑问,要使容器工作,操作系统必须要有相关的软件包。这解决了应用程序开发人员正在处理的一个主要问题,也就是把应用程序从它运行的环境中分离出来的问题。在部署应用程序时,开发人员不必担心应用程序正在运行的环境问题。如上所述,这是一个自开发和实现用程序以来一直困扰开发人员的问题。
据谷歌Miles Ward透漏,谷歌每周在整个数据中心中使用的容器超过了20亿个。如果公司要关注的是依赖关系,那这将会是一个不可完成的任务。谷歌对此想出了一个类似于Borg的项目以及它的后续项目Omega。容器帮助了像谷歌这样的公司,来处理在多维空间上进行迁移,持续部署,移植性以及可扩展性的问题。
难怪容器项目有650个贡献者对容器做了改进。容器自身的可移植性和部署的方法令人兴奋。例如,容器可以装在Red Hat甚至是Debian上,而且开发者不必担心怎么解决单个容器之间的依赖关系。这也就是为什么它能够“超越虚拟化”,在虚拟机坏境当中,当你部署应用程序时,你必须总是担心容器的依赖关系。新问题的出现,如容器生命周期管理,容器内应用程序回滚能力,特别是容器安全性问题。
容器使得操作系统虚拟化,其所有的组件和依赖都包含在容器内。在许多轻量级操作系统 中也能放入容器。红帽已经引进了原子平台;VMware公布了Bonneville,Bonneville是VMware的容器版本;谷歌有谷歌容器;并且微软在它的Windows的 Nano Server上也发行了它的容器版本。由于每个容器都是独立的,所以他们都可以互相访问。
容器是一个轻量级并且可移植的盒子,具有应用程序的所有组件。这个概念解释了为什么你可以从多个环境(无论是私人的,公共的,还是混合的)中移动容器。在之后的博文中,我们将讨论如何把组件应用于虚拟机或容器的服务上。其实事实就是如此轻量级的容器,如果能把多个容器放在一个环境中,那将会创造一个全新的概念,即超规模。
这明显的降低了共享资源的许可费用。主要是容器改变了整个应用程序开发的生命周期。它们也带来了一个全新的模式——即最终使我们能够不用考虑底层硬件而部署面向服务的应用程序。你将会在不同硬件上看到来自多平台多服务组成的应用程序。网络容器和大多数存储容器,通过单一的应用程序连接起来。这能够让应用程序以任何语言在当前作为服务平台的环境上安装,同时也使ISV社区发展成一个容器提供者。
那么,有了这样一个新的环境,就不必为那些公司因为切分或分离这个概念会大大的减少其价值而创建开源容器项目感到惊讶。它也促使Windows和Linux相互关联并达到应用程序的并发和透明执行。这个小组以当时在谷歌开发的Kubernetes为基础,开发工作流组建,并且改变了我们在过去30年间一直使用的管理模式
一个开发人员从一个基于环境的操作系统出发,并开始定义实现他们应用程序所需要的软件包。一旦一个容器创立了,它就能移入到一个现实图像中或是其他用户组里来构建应用程序,这就是容器的神奇和非理性之处。由于组件或容器在客户的生命周期中得到管理,生命周期的管理也变得非常简单。因此,OCP项目将建立通用服务(如谷歌地图、搜索引擎)一起使用的容器仓库和目录。它使得合并应用程序服务的方式变得强大而微妙。围绕容器来确定公共仓库。当开发人员开发应用时,他可以决定是否使用托管容器这种公共服务。
一个全新的生产概念和操作环境将随之而来。公开容器的理念是开源容器项目的关键基础之一。它还可以防止在容器中使用多种格式和切分所有的API文档。我们将密切关注OCP的工作。这些概念也开始在他们产品中的一些供应商中开始流传。
在所谓的以应用程序为中心的云计算中,我们可以注意到,我们能够在早期阶段看到应用程序开发中的所有巨大变化,都是因为容器。
英文原文: Containers change the game (译者/刘帝伟 审校/刘翔宇、朱正贵 责编/魏伟)
作者简介: Alexander Gray,Skytree首席技术官,佐治亚理工学院计算机学院副教授,主要致力于大规模数据集的机器学习算法技术研发,1993年开始在NASA喷气推进实验室机器学习系统小组从事大规模科学数据的工作。
译者简介: 刘帝伟,中南大学软件学院在读研究生,关注机器学习、数据挖掘及生物信息领域。
【预告】 首届中国人工智能大会(CCAI 2015) 将于7月26-27日在北京友谊宾馆召开。机器学习与模式识别、大数据的机遇与挑战、人工智能与认知科学、智能机器人四个主题专家云集。人工智能产品库将同步上线,预约咨询:QQ:1192936057。欢迎关注。
更多Container技术资讯,请扫描下方二维码关注我们
或者扫描下方二维码进入CSDN Container用户群讨论