你可能会在你的手机上使用Google搜索引擎,但是你要明白,它不仅仅在你的手机上运行良好,在别人的手机上也是一样,因为在这后面是分布在全球的数据中心里面运行着的成千上万的机器。Facebook。Amazon以及其它最受欢迎的互联网应用也是同样的道理。这是如今这个时代构建App的唯一方式,也是构建全球即时响应服务的唯一方式。
问题是,在成千上万的机器上运行软件是极其困难的。而且让每台机器既有效率又不浪费资源和成本是难上加难。连Google和Facebook这样的巨头都需要一定的时间搞定这些难题,而且他们需要计算机科学领域最杰出人才的帮助。
比如Solomon Hykes,他创造了Docker,一种新的构建基于互联网软件的方法。Docker为企业提供一种简单并且富有效率的方式来在成百上千乃至上万的机器上运行软件。“单个机器将变得不那么重要,”Hykes如是说。Solomon Hykes是一个在法国接受教育的程序员,他在旧金山的初创公司推出了Docker引擎。“机器的集合才是最重要的。”
仅仅推出两年,Docker对计算机科学的影响已经是无与伦比的。现在有超过100000个应用程序在使用这样的技术,它是由科技行业的每一个人,虽然他受到众多大型厂商的支持包括Google、Amazon、Microsoft、IBM。尽管如此,这仍然是一件很难把握的事情。但是why not,为什么不尝试一下呢?
Hykes说,首先你应该将Docker视为一个软件的集装箱。正如集装箱运行我们以一套标准的方式将货物从船上转移到火车上以及卡车上,实际上,Docker提供了一个标准的方式将软件从一台机器迁移到另一台机器。如果应用程序需要更强的计算机性能,Docker能够很方便的将其迁移到新机器上面。
这在云计算时代显得特别重要,因为企业不但要让他们的应用运行在自己的机器上,还有运行在租来的云计算服务的机器上。三大云计算服务商:Amazon、Google、Microsoft都在拥抱Docker,这意味着企业可以更轻松地扩展他们的应用到这个几乎无限的计算机性能池中。“如果你还认为这世界上的计算基础设施是各自为战的,那么就大错特错了,实际上,我们在共同建设这样的基础设施,“Hykes说。
但是Docker不仅仅是“装载货物”的一种手段。它还能够充分利用每台机器的性能。企业可以把多个容器放到任何给定的计算机上,它们能抓取机器的所有资源。一个容器的大小并不是固定的。你可以将其想象为一个灵活的Shmoo玩具或松散装豌豆的袋子。容器能够尽可能的获取可以获取的能力来保证应用的平稳运行,而不管用于输出搜索结果还是电子表格,电影或婴儿照片。
“虚拟机”也能够将一台机器的资源分配给多个应用程序。但是Docker能够让程序员设计全身心的设计自己的应用程序,而不必担心运行它们所需的大量基础设施。Google云计算专家Eric Brewer说,它为程序员提供了一个“应用程序级别的视图”而不是“机器级别视图”,很显然,应用程序级别视图将更自然,而且从长远看也必将胜出。
和Docker技术一样,Brewer说,这让我想到Google庞大的在线帝国运行方式,:“我们在如何构建应用程序方面和Docker有着相同的愿景应”。这可以说,在一定程度上是对Solomon Hykes创造力的高度肯定。这似乎也验证了Docker的口号“everywhere”。