Docker能红多久?
- 来源:计算机世界 smarty:if $article.tag?>
- 关键字:Docker,谷歌,容器技术 smarty:/if?>
- 发布时间:2015-02-10 15:58
在2015年,Docker仍将是最引人瞩目的容器(Container)技术,但市场上还将会出现很多其他容器技术,市场竞争正在展开。
一年前,如果你问大多数系统管理员能不能用容器,很有可能得到的是系统管理员的一个茫然的眼神。然而,此一时彼一时,当下容器技术,特别是Docker风头正劲,在其版本还只是测试版时,在财富500强中就已经有一大批公司开始在其服务器、数据中心以及云应用中采用Docker。Docker技术副总裁James Turnbull曾表示,在Docker 1.0正式发布之前,就已经有3家主要银行将其投入到生产应用中。
容器为何如此受欢迎
其实,一旦你理解了Docker技术做了些什么,就很容易理解它为何如此受欢迎。Parallels公司服务器虚拟化部门CTO James Bottomley从技术的角度进行了解释。至今为止,数据中心已经使用了很多年的虚拟化管理程序(Hypervisor),如Hyper-V,KVM和Xen等,它们之所以能充分利用硬件资源来支持云计算,其技术实质是仿真出一个虚拟的硬件,这意味着它们对系统要求较高,也就是比较占用资源。而容器是基于共享的操作系统,与Hypervisor相比,它们更小和更有效率,容器并不虚拟硬件,而是运行在单个Linux?的实例上。Bottomley表示,这意味着我们可以避免虚机(VM)所需要的绝大多数资源,而只有一个包含应用程序的小巧而整洁的应用包而已。
如果是一个充分优化的采用容器的系统,同样的硬件条件下其支持的实例数将是Xen或者KVM虚拟机数量的4~6倍。即使不进行任何额外的工作,同样的硬件支持的服务器应用实例数量也能超过虚拟机的2倍以上。
Bottomley说,至于Docker,其本身并不算是容器技术,而是一种应用打包技术和一套应用打包的流程编排系统,以保证容器技术很好地工作。如果容器底层的操作系统平台不支持Docker,Docker将无法工作。
这样的解释还是太技术,如果从商业应用来谈可能更容易理解。就是说,如果采用Docker,在一个很小的服务器上就可以运行很多应用服务器实例。这意味着企业可以节约大量的电源和硬件购置成本,以及每年可能高达数百万美元的数据中心维护费,仅此一点就会对企业产生了非常大的诱惑。
容器的技术演进之路
所谓容器就是在一台机器上提供各种资源的隔离,从而支持多个应用同时运行,而从应用的角度看,自己是独占这台机器的。应用本身还可以支持创建子容器。很多人以为Docker是IT领域的一项伟大的新生事物。这句话说对了一半,Docker是伟大的但并不是一种全新的技术,特别是其底层的容器技术更是早就为业内所熟知。
容器技术可以追溯到1979年的Unix V7.0版中的“chroot”命令——Unix中一个切换根目录的命令。自那时以来,它以各种格式存在于各种操作系统中。其中最知名的是FreeBSD中的Jail、AIX工作负载分区和Solaris中的容器。
尽管很少有人知道它,但是毫无疑问应用得最多的容器技术是谷歌的lmctfy(Let Me Contain That For You,即让我容纳你的程序)。有不少于20亿个容器采用lmctfy。在这些谷歌的容器中内运行着我们用过所有的谷歌应用程序,从Document、Gmail到Google搜索。
容器技术的最新进展发生在Linux系统中。Parallels在其Virtuozzo和其开源的服务器虚拟化软件OpenVZ上都取得了一些商业上的成功。而LXC已成为大多数容器的基础,包括Docker。
Docker何以成为明星?
谈到容器技术,Docker无疑是最受关注的一个,其占据了媒体绝大多数关于容器的报道版面,也成为业内人士关注的焦点。亚马逊、思科、谷歌和VMware都宣布支持Docker,甚至微软也正在准备进入支持Docker的阵营中。Docker为什么会获得这种压倒性的行业支持?显然,每一项技术的流行总是会有技术和经济上的原因。当然,同样也有公司有足够的理由不接受容器。
首先也是最重要的原因是安全。libvirt虚拟化应用程序编程接口(API)开发人员Daniel Berrange曾在2011年写道:“LXC还是不安全的。如果我想真正的安全,我将使用KVM。”虽然他谈论的只是LXC这一种容器技术,但其实每个人都知道所有容器都面临这些问题。
在2013年,LXC容器终于支持非特权的用户来创建LXC容器,原来只有根用户才有权创建。这就使得容器的安全性有了很大提高。Docker 就公开承认,即使他们一直在不断工作以改善其安全性,但仍然还有很多工作要做,但Docker 和任何其他基于LXC的容器技术相比,在安全性上已有了更多的改观。
容器一个重要的里程碑是在2014年3月,当Docker与Canonical、谷歌、Red Hat和Parallels一起创建了一个关键的标准化的开源项目libcontainer。该项目让容器能与一种一致的、可预测的方式支持Linux的命名空间、控制组、AppArmor安全配置文件、网络接口和防火墙规则。由于无需Linux用户空间的组件(如LXC、libvirt或systemd-nspawn)的支持,它极大地减少了对运行环境的依赖,从而使Docker可以跨不同版本的LXC。
更重要的是通过使Docker的关键组成部分标准化,从而使得Docker获得了更多人的认可,特别是得到了更多开发人员的认可。因为他们能够自信地向客户交付基于容器技术的应用程序,完成所有所需的库和其他文件,并确信他们的程序最终肯定能由Docker运行。
此外,libcontainer还可以让更多的容器功能向应用程序开放,这将让有关的工具能同时支持更多的产品,比如让Docker和LXC部署在OpenVZ或甚至云计算服务器产品上。
值得注意的是,Docker本身不是容器技术,而是一种开源的应用容器引擎,它让开发者可以打包他们的应用以及相关库到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。正是这种应用程序的打包功能让Docker受到欢迎。
应该说,Docker流行的根本原因在于它是一种在正确的时间、推出的正确的技术,也就是说是众多因素的综合作用才让Docker有今天的风光。而其中有两个重要的行业巨变为Docker的流行奠定了坚实的基础。首先是虚拟化技术在数据中心中的普及,这为Docker进行了很好的市场铺垫。因为与服务器虚拟化相比,Docker是一种更为轻量型的虚拟化解决方案,其优势很容易被理解和认可;其次是容器技术让企业认识到不同应用共享同一个操作系统同时相互隔离的优势,而Docker再次凸显了这个优点。本质上,一个容器就是一个独立的应用。
Docker一统江湖?
那么,是不是未来我们都可以唱着赞歌转向基于Docker的数据中心?答案并不肯定。你可能已经注意很早的时候就有很多其他容器玩家在其中,他们同样也希望在这个市场有自己的一席之地——虽然对谷歌的lmctfy这一点不重要,只要在谷歌的计算引擎上运行容器,那Google都会开心,而要紧的是容器市场那些较小的公司。
这些公司中许多是纯开源软件厂商,它们要找到一种可行的商业模式非常困难。最重要的是其中许多面临很大的风险和资本压力,或早或晚必须要将他们的技术转化为利润。它们的一种做法是按照生态系统中最主流的商业模式,推出尽可能多的产品从而尽量把他们的客户留在其新的软件堆栈中。比如,就有一些厂商在向Docker容器中加入新的服务来赢得市场空间。
有一家名为CoreOS的公司,其主要产品是一个基于Linux内核和Docker的轻量级操作系统。CoreOS就公开批评说,Docker的主导者已经严重偏离了正确的轨道。Docker原本应该通过提供一个简单、直接的容器应用引擎,而现在正在转向提供一个令人困惑的完整的平台,包括创建、存储、上载、运行以及协调Docker映像文件。正如CoreOS首席执行官Alex Polvi所说,“大多数使用CoreOS的用户不是从头开始,他们原本就有一个IT环境中,他们想做的是把容器集成进来,而并不准备在全新平台上的重新开始应用容器技术。”
Polvi补充说,他们曾试图在这些问题上与Docker团队进行沟通,但Docker的团队对解决这些问题并不感兴趣。因此,CoreOS正在研究自己的容器引擎,这就是Rocket。
Docker CEO Solomon Hykes对此并不认可。同样也有人不同意Polvi的观点。专栏作家、Adobe公司移动副总裁Matt Asay认为,这种公开的分裂对CoreOS和Docker没有任何好处。在这些争论的背后是不同的厂商在选边和站队:有些公司(例如云计算公司Joyent)就全心支持Docker,同样也有公司认可CoreOS。
CoreOS是第一个公开出来批评Docker的技术路线的,业内也有其他人告诉我,有不少人认为Docker正在犯贪多嚼不烂的错误。我们可以预期,未来肯定会有公司推出自己的容器引擎与Docker直接竞争,也会有公司选择支持CoreOS 的Rocket。
同时,其他公司,比如Canonical正在Docker之上进行技术扩展,其LXD(Linux容器守护进程)在现有Linux安全技术之上新增了更多安全特性,包括在Linux内核中支持用户名称空间和CGroups以及其他Linux安全机制(如Secgroup和AppArmour)。虽然其创始人Shuttleworth一直坚持说,LXD是对Docker的增强而不是替换,但有不少认为其真正的用意是要与Docker展开竞争。
而Parallels早在Docker之前就推出了自己的商业版容器技术。它的计划是不管这两家如何争吵,都同时与Docke和Rocket合作。Parallels近期宣布其云服务器将支持Docker。Parallels的长期规划是交付“最安全、最密集、最广泛技术支持的容器解决方案”。Parallels CTO James Bottomley表示,“就长远来说,我们认为,容器的未来在于能为其开发大量的应用实例,比如云的多租户问题、云安全问题,甚至支持NFV的新型操作系统虚拟化技术等,所以,我们与各种技术流派合作,来拓展容器的使用范围。”
他是正确的。未来容器技术还将继续流行,甚至要比目前还要火。该技术走到今天,下面的问题是谁会成为领跑者。诚然,Docker在这一点上有极大的优势。然而,它会继续保持目前的技术优势吗?未来会有一个竞争对手甚至几个竞争对手出现并盖过Docker的风头吗?或者,可能因在安全方面面临严重的技术问题,从而让Dock放慢其前进的步伐?就笔者个人而言,希望Docker及其支持它的公司们能倾力支持和合作,这样Docker才会在新的一年越来越好。
很显然,新的一年里Docker必然会面对各种挑战,如何应对就要看Docker的技术如何演进,毕竟应对这些挑战是该技术能立足于未来的数据中心、服务器或云世界的前提,也是每一项新的产品和技术走向成熟所必须经历的。
Steven J.Vaughan-Nichols
