容器领域趋势分析:多点开花,Docker不再一家独大
就在去年的10月份,大家似乎都钟爱Docker。你要是以为Docker就是容器领域的唯一玩家,那也情有可原。
Docker本身其实只是在2014年下半年才备受关注,Docker 1.0在之前的6月份首次亮相。但在6月份到10月份这短短几个月的时间里,Docker人气一路飙升,红帽在新的RHEL 7版本中增添了支持Docker的功能,IBM公开拥抱Docker和容器,亚马逊推出了EC2容器服务,连公认的竞争对手VMware也在当年8月宣布支持Docker。
虽然Docker和容器化目前还无法代替完全成熟的服务器虚拟化,尤其是在管理基础设施方面,但像Kubernetes Docker管理系统这些开源选择方案还是让人看到了希望:容器技术有望在将来满足企业的更高级要求。
容器竞争白热化
但是虽然2014年下半年支持Docker及容器化的声势越来越大,但现在Docker的处境也未必是人见人爱。很快就会有许多竞争对手挑战Docker在容器领域一家独大的霸主地位,与之一较高下。
我们在谈论谁呢?首先是CoreOS,这种开源轻型操作系统基于Linux内核,是为了给部署的集群系统提供基础设施而设计的。CoreOS的老板Alex Polvi对于Docker技术迈进的方向似乎一点也不满意。
他在一篇博文中说:“Docker在2013年初首次展示在我们面前时,‘标准容器’这个想法惹人注目,立即引起了人们的注意。”
Polvi继续说:“可遗憾的是,一种简单的可重复使用的组件影响不了整个系统的运作方式。Docker现在在开发启动云服务器的工具、用于集群的系统以及一系列广泛的功能,比如构建映像、运行映像、上传、下载及最终甚至覆盖网络,它们都编译成一个整体的二进制代码,在你的服务器上主要作为root来运行。”
他补充说,从安全和可组合性的角度来看,他认为,Docker的流程模型存在根本性的缺陷,因为一切都是通过集中式守护程序来运行的。
随后Polvi直指问题的核心:“我们应该不要再谈论什么Docker容器,而是开始谈论Docker平台。Docker容器没有成为我们之前设想的那个简单的可组合的构建模块。我们仍信奉Docker当初提出的容器的最初前提,所以我们在对此做一番工作。”
Rocket,一种新的容器运行时环境
他在这方面所做的工作就是,构建一种新的容器运行时环境,名为Rocket,以此替代Docker运行时环境。他表示,它在设计时就着眼于可组合性、安全性和速度。原型已经在Github上发布。
Docker首席执行官Ben Golub很快对CoreOS宣布Rocket作出了回应。虽然希望能探讨Rocket项目提出的一些技术观点,他还是采用了颇具外交辞令的说法:
“虽然我们并不同意一些观点以及选择宣布Rocket的时机(就在阿姆斯特丹召开DockerCon大会的前夕),我们还是希望我们都能继续以什么对用户和开发人员最有利作为开发产品的指导方针。”
而Rocket不是Docker的唯一替代容器。这个领域还有多得多的竞争对手。
微软通过Drawbridge支持Docker容器
微软已经宣布,它将在其Azure基础设施即服务(IaaS)系统中支持Docker容器;等自己的平台即服务(PaaS)支持Linux后,可能还会在其PaaS上支持Docker。微软还在致力于开发自己的容器技术,眼下这项技术名为Drawbridge。该容器技术可能会在不远将来的某个时候出现在Windows Server和Azure中。的确,Azure的首席技术官Mark Russinovich已证实,公司已经在内部使用Drawbridge。
另外还有Spoon提供的另一种Windows可能。微软解释:“Spoon让你可以将应用程序及其依赖项包装到一种名为容器的轻型、隔离的虚拟环境。随后,容器化应用程序可以在安装有Spoon的任何Windows机器上运行,不管底层基础设施怎样。这就消除了安装、冲突、故障和缺失的依赖项。”
Spoon容器建立在Spoon虚拟机的基础上,而Spoon虚拟机是一种应用程序虚拟化引擎,它为操作系统的诸多核心对象提供了轻型名称空间隔离机制,比如文件系统、注册表、进程、网络和线程子系统等对象。
Canonical发布自己的容器系统
另外还有不甘落后的Canonical,该公司已宣布了自己的容器系统,名为LXD,面向其Ubuntu Linux发行版。该公司表示,LXD还将与OpenStack集成起来。(Docker建立在Linux容器即LXC上,LXD的名称由此而来。)
Canonical这样解释其新项目:“LXC将是客户端,LXD将是服务器。开发人员如今之所以喜欢LXC,是因为它为他们提供了几乎即时的轻型容器,他们因此可以在里面运行一系列广泛的Linux操作环境。在将来,开发人员可以在想要创建并拆除这些环境的所有机器上运行LXD,并且从网络上任何地方,使用LXC来驱动这个过程。”
另外请别忘了Flockport,它大力支持LXC用于容器化。Flockport这样解释:“LXC是一项为用户提供轻型Linux容器的容器技术,而Docker是一种基于容器的单一应用程序虚拟化引擎。它们听起来似乎相似,但其实全然不同。”
容器领域的整个形势让人不由地联想到了五六年前的服务器虚拟化领域。Docker在2014年大受欢迎,在2015年势必会迎来更迅猛的发展,进一步成熟起来,但是Docker肯定不会是未来容器领域的唯一玩家。