如果一年前你去问系统管理员,会不会做个“congtainer(容器)”,很多人都会露出茫然的眼神。但如今则完全不同了。
容器技术,特别是Docker技术,如今已热得不能再热了。尽管它还处在测试阶段,但财富500强企业都开始利用Docker将其服务器、数据中心和云应用进行“容器化”。Docker公司负责服务和技术支持的副总裁James Turnbull称,在Docker 1.0尚未发布之前,就有三家大银行已经将其用于生产环境了。
Docker与容器为何如此大热
一旦你了解了Docker能做什么,也就很容易明白它为何如此受欢迎。Parallels负责服务器虚拟化的CTO James Bottomley认为,从技术上讲,已经使用了多年的虚机(VM)管理程序hypervisor(如Hyper-V、KVM和Xen等)主要是“基于仿真虚拟硬件的,也就是说它们对系统的要求很高。”而容器则主要基于分享操作系统。它们比hypervisor更瘦身、更有效率。容器不对硬件进行虚拟化,而是驻留在一个Linux实例上。这等于说你可以“抛弃掉99.9%的没用的虚机废料,只保留一个小而干净的胶囊可以容纳你的应用。”
此外,据Bottomley说,一个经过整体调谐的容器系统,可将Xen或KVM虚机上的服务器实例数量增加4到6倍。换句话说,无须额外投入,便可在同样的硬件上将服务器应用实例的数量至少翻一番。
至于Docker,Bottomley说,“Docker虽然本身不是容器技术,但它是一个应用打包和编排系统,需要利用容器技术来实现其功能。假如底层操作系统不能提供容器技术,那么Docker就无法工作。”
下面我们转向业务案例。你可以利用Docker,在数量最少的服务器硬件上运行数量最多的服务器应用实例。这意味着可以在数据中心每年的电费、硬件购买以及维护成本方面省下数百万美元。
容器的历史
或许有人会认为容器在IT的历史上是个伟大的新事物,这么说其实只对了一半。它的确伟大,但并非新事物。
回溯到1979年Unix版本7的chroot指令,就能发现容器的踪迹。自那时以来,它又以各种不同的形式出现过。最有名的就是FreeBSD Jail、AIX工作负载分区,以及Solaris的容器。
最受欢迎但却少有人知的容器技术,就是谷歌的Imctfy。它每周要运行20亿个容器。这些谷歌容器上运行的都是你每天都会用到的谷歌应用,从谷歌文档、Gmail到搜索都有。
最新的进展发生在Linux上。Parallel的Virtuozzzo容器及其开源基础OpenVZ已获得了一些商业上的成功。LXC已成为大多数容器的基石,包括Docker在内的很多容器都是在其上构建的。
Docker的成功之路
Docker如今频频成为媒体、客户与合作伙伴的热切关注。亚马逊、思科、谷歌和VMware都对Docker提供支持。就连微软也开始了Docker行动!那么Docker究竟是如何获得如此压倒性的行业支持的呢?容器大受关注自然有其技术和经济方面的原因,但是企业不情愿使用容器也有其道理。
第一个也是最重要的原因自然是安全性。作为libvirt虚拟化API开发者的Daniel Berrange曾在2011年写道:“LXC并不安全。如果我需要安全的话,最好使用KVM。”尽管当时他所谈论的只是其中的一种容器技术,但人人都知道所有的容器都存在这个问题。
2013年,为无特权用户而不是根用户创建LXC容器成为可能。这就使得创建更安全的容器成为可能。随着Docker日益被认可,有了更多的安全性,但依然有大量的工作要做,要让Docker和其他任何基于LXC的容器技术变得比以往更安全才行。
另一个重要的里程碑是在2014年3月,Docker获得了来自Canonical、谷歌、红帽和Parallels的联合支持,创建了至关重要的标准化开源计划libcontainer。该计划力图使容器能够与Linux命名空间、控制组、功能组、AppArmor安全配置、网卡以及防火墙规则等以一致性、可预见的方式一起协同发展。通过让程序摆脱对Linux用户控件组件如LXC、libvirt或systemd-nspawn的依赖,该计划可“大大减少迁移部件的数量,让Docker摆脱由于需要跨LXC的多种版本和发行版而产生的副作用,”Docker的共同创始人兼CTO Solomon Hykes说。
更重要的是,通过让Docker的一个关键组件成为标准,该计划获得了更多的信赖。尤其是该计划让Docker更受到开发人员的关注,使他们能更自信地向客户交付容器化的程序,并配备所有需要的库和其他文件,确保能够在客户的Docker上运行。
此外,正如Bottomley所解释的那样,libcontainer“可以向应用展示更细粒度的容器特性,允许我们在制作工具时可以更无缝地跨越多种不同的产品。”举例来说,该计划“能允许Docker和LXC在OpenVZ,甚至云服务器产品上进行部署。”
另外,如Red Monk共同创始人兼分析师Stephen O’Grady所解释的那样,从很多方面来看,Docker的运气也很不错,可以说是在正确的时间出现的正确的技术。O’Grady写道:“它的成功可以看做是诸多因素的综合效果。最明显的因素,就是其底层平台的普及。”
他继续说道:“然而,也许更为重要的是,有两大行业转变因素在发挥作用,让容器技术的采纳变得更容易了。首先是虚拟化在企业中几乎到处都是。”最后,“具体到容器来说……则是操作系统的重要性不断受到侵蚀。”容器是一般地,而Docker则是具体地对操作系统产生威胁,底层操作系统作为一种共享的基底、一种通用的基础,其实并不比数据中心的架高地板具有更多的价值。对容器来说,其构建的基础单元就是应用。只有应用才是唯一真正独特的要素。
Docker的路子是否走对了?
如上所述,已有不少容器厂商开始了布局。它们希望在自己的产品组合中锦上添花般地增加容器功能。用什么容器对于像谷歌这样的大公司来说可能不算什么(无论你是用lmctfy还是Docker,只要在我谷歌的计算引擎上跑就行),但是对于容器领域的很多小企业来说就完全是另一回事了。
这些小公司很多都是纯粹的开源厂商(+本站微信networkworldweixin),要想寻找到一个切实可行的商业模式是很难的。此外,这些小公司很多都背负着风投的压力,必须尽快将其技术转换成可见的利润。一种办法就是尝试去主导一个生态系统,吸引尽可能多的组件进入其新的软件堆栈,从而留住客户。
业内人士称,Docker所做的就是要为其最初的容器产品增加更多的服务项目。
有一家公司,也就是CoreOS,正在围绕Docker构建自己的轻型Linux服务器操作系统,该公司公开表示,Docker公司已经严重偏离了最初只提供一个简单容器的初衷,开始转而想提供一个令人困惑的平台,想把创建、存储、上载、运行和编排Docker映像的程序构成一个完整的平台。CoreOS的CEO Alex Polvi说:“很多在其现有环境中使用CoreOS的企业只是想在其中集成容器功能而已。他们并不打算要一个全新的平台。”
Polvi还说,他们曾尝试与Docker合作,来解决这些问题,但Docker团队却没有兴趣。所以CoreOS只好开发自己的容器:Rocket。
虽然有些容器企业,如云厂商Joyent完全支持Docker的市场定位,但其他一些公司则暗中赞同CoreOS的看法。
CoreOS是第一家批评Docker的公司,不过有业内人士称,其他一些公司也认为Docker这是在做贪多嚼不烂的事情。可以预计,还会有一些竞争对手拿出自己的容器,或者支持CoreOS的Rocket。
与此同时,诸如Canonical这样的开源企业则在扩展Docker的底层技术。Canonical的LXD(Linux Container Daemon,Linux容器精灵)依据已有的Linux安全技术,为Docker增加了安全性能,其中包括支持用户命名空间和CGroup的内核,以及其他Linux安全机制如Secgroup和AppArmour等。尽管Canonical的创始人Mark Shuttleworth说LXD只是一种增强版而没想取代Docker,但有消息称,Canonical私下里正在开发的一些项目就是想与Docker展开竞争的。
还在Hykes真正看好Docker之前很久,Parallels就一直在进行容器的商业化,并计划与Docker和Rocket展开合作。Parallels日前已宣布,Docker将会在Parallels的云服务器的容器中运行。
Parallels的Bottomley说,Parallels计划提供比任何容器企业“更安全、更密集、也更为集成化的容器解决方案”。他说,“长远来看,我们认为容器的未来将取决于大量用例的开发,就像能够解决云租户、云安全的解决方案一样,甚至可能是支持虚拟网络功能的新型操作系统,所以我们打算与计算行业所有领域的企业开展合作,尽力扩大容器的实用性。”
他是对的。容器会持续成为热点,还会进入更多的领域。2015年的现实问题是,谁将成为领跑者。Docker目前的确已获得了巨大的支持。但它能够持续发展吗?2015年会不会出现一个或多个竞争对手,扰乱其发展?此外,会不会出现严重的安全上的技术问题,延缓其发展的步伐?笔者认为,Docker以及支持或与其有合作关系的企业在2015年会发展的不错。但这一年也将是Docker不断遭遇挑战的一年。