对于开源应用程序容器初创公司Docker而言,去年可谓是大好年份。Docker可以帮助应用程序在任何内部环境或云计算环境中高效地运行,不管使用什么样的运行时系统(runtime)。
Docker一路高歌猛进,其项目在2014年6月发布了1.0稳定版本,当时适逢首届DockerCon大会在旧金山召开,Docker社区俨然一副日益壮大的态势。
在2014年,该公司宣布了与微软、红帽、谷歌、亚马逊网络服务和VMware等业界巨头达成了一系列合作伙伴关系和整合项目。到年底,Docker声称有71379多款应用程序已准备好支持Docker。
基本上准备就绪
Docker的发展势头似乎不可阻挡;知名调研机构加特纳集团(Gartner)近期的一份报告证实了这一观点;该报告表明,这项还很新兴的技术基本上已为企业做好了准备,不过请注意,重点应放在基本上。
但容器领域并非Docker一家独大。
首先,让Docker准备好在生产环境下运行需要更庞大的生态系统伸出援助之手。虽然用Docker容器封装的应用程序具有良好的可移植性,但是它实际上就待在那里。复制、可扩展性、弹性和安全性都需要其他公司的工具给予帮助。
许多公司都希望借Docker的势头大有作为,它们之间的竞争非常激烈。加特纳集团的上述报告指出,SELinux和AppArmor是任何准备走Docker这条路的IT部门都应该考虑采用的额外安全层。Asigra已推出了面向容器的专用备份解决方案。谷歌计算引擎、亚马逊网络服务和微软Azure都在竭力证明自己拥有***大的原生工具,可用于管理、扩展、调度或更新Docker容器。(多年来,谷歌在其数据中心使用自家的Linux容器技术。它积极支持Docker社区:将源代码移交给Kubernetes这个容器管理项目就是佐证。)
随便你说出一种功能、需求、工具集或是应用程序,Docker生态系统里面都可能有厂商在已经致力于此。
失去重点?
但是形势一片大好的应用程序容器领域也存在问题:Docker不希望生态系统的其他人分得一杯羹,至少不是完全。这家公司一直在不遗余力地扩建平台,增添了更多的容器编排和管理功能。这招来了容器社区的一通批评,容器社区认为Docker这家公司忽视了Docker这个项目当初得以大获成功的轻量级特性。换句话说,Docker需要适应现有的工具链,而不是成为另一个系列的不定因素。
实际上,Docker在2014年年底陷入了很尴尬的境地,当时大受欢迎的、超轻量级Linux内核初创公司CoreOS(它一向态度非常明确地支持Docker平台)炮轰Docker失去了重点,并发布了自己的容器运行时系统:Rocket。
Docker回应称他们不同意Rocket公告中“令人质疑的论调”,这种回应不是很有说服力,只是让大家更相信CoreOS的观点。
Docker赖以成名的地方是让容器变得更简单、更有效,而不是“发明轮子”:自2008年以来,Linux容器(LXC)一直是Linux内核的一部分,而LXC的身世甚至可以进一步追溯到OpenVZ和Solaris容器等技术,甚至可以追溯到1979年和chroot命令。
可此可见,自Docker为这个概念重新注入活力以来,Rocket可能是***个主要的替代容器,但它不会是***一个替代容器,没有什么阻止得了其他公司在这个概念的基础上开发出自家技术。
虚拟化需求
重要的是记住这点:Docker并不适合每一种使用场合。VMware和Docker似乎是一对怪异的合作伙伴,毕竟前者销售虚拟化软件,而后者可以大大减少你需要的虚拟机数量,但要考虑到这一点:Docker非常适合用于封装跨不同环境运行的新型应用程序,但不是每个应用程序都非常适合这项任务。
比如说,尽管微软承诺与Docker社区合作,但Windows应用程序在Docker环境下运行起来不是非常高效,而是需要变通方法。
换句话说,VMware等公司仍然可以发挥其作用。在未来很长一段时间,虚拟机在大多数数据中心仍然会有一席之地,尽管Docker和之类的容器为少花钱多办事提供了一条途径。(Joyent等一些公司提供了管理VMware/容器混合环境的工具。)
即使一些公司认为容器适合自己,但除了Docker外,容器方面还是有很多的选择。