超越Google,他企图将整个互联网塞进1台电脑

云计算
20世纪50年代,集装箱颠覆了全球的运输方式。在今天,这种“集装箱”化的服务打造方式已为Google、Twitter等众多互联网公司使用,这里我们将了解这么一家公司,它开源了门槛更低、使用更简单的“集装箱”工具。

dotCloud是一家PaaS服务供应商,总部设在旧金山。在今年年初,该公司开源了自有平台上的关键组件Docker。Docker是一种附加了高等级API的Linux Container(LXC)技术,提供了一个轻量级虚拟化解决方案,用以隔离运行Unix进程,它提供了在安全、可重复环境中自动部署软件的途径。

Docker使用了Standard Container的理念,对软件组件及其依赖关系进行封装,其中包括二进制文件、类库、配置文件、脚本、Virtualenv、jar包、gem包、原始码等等。可以运行在任何支持cgroups的64位Linux内核上,这样的话container就可以部署在任何笔记本电脑、分布式基础设施、云服务等环境。对环境的保存,让它拥有着广泛的用途,比如:持续部署、Web部署、数据库群集、SOA等(点击查看更多Docker特性)。

今日,Wired记者Cade Metz走进了这家在开源及云计算领域大有建树的公司,以下为译文:

 

[[85258]]

 

谷歌将其整个网络帝国运行在其数据中心规模的主机上,而类似Google Search、Google Maps、Gmail这些服务更需要上十万台主机的主数据中心去支撑。然而讨论数据中心时,服务器的数量绝不是唯一的着眼点,还有那连接海量电脑的新型软件,让整个数据中心更像是一个独立的系统——一个可以运行该公司任何应用的巨型计算机。

类似Gmail这样的Google应用完全不可能只运行在一台主机上,即使是一组服务器也不行;他们运行在整个数据中心上,根据需求抓取任意主机的资源。Google称之为“warehouse-scale computing”,当然对于有些人来说,这样的规模太大了。然而Solomon Hykes并不是他们中的一个,他有着比Google更大的目标:通过开源软件项目Docker,使用标准化对应用程序的组件进行隔离及封装,对环境进行保存以降低对硬件的依赖性,从而建立一台可以塞下整个互联网的主机。

在他的办公室,旧金山市中心一个高层的16楼上,Hykes穿着一件印有鲸鱼的T恤。鲸鱼的画风趋向于漫画,在一片纯蓝的海水上露齿微笑,而它的背上装载着大堆的集装箱——就像那些旧金山海湾奥克兰码头高高耸立的货物,或者开往萨克拉门托的火车车厢上。

看起来或许有些奇怪,但是鲸鱼代表着Hykes眼中的互联网愿景。就像20世纪50年代集装箱颠覆了全球运输方式——一个标准,让货物在火车、汽车、轮船之间畅通无阻,Hykes期望建立一个覆盖整个互联网及全世界私人网络的软件应用程序移植标准,在所有机器中相互转换。

卡通鲸鱼正是Docker的logo,年初时由Hykes和他的18人公司dotCloud开源。Docker将软件应用程序打包进自己的container,因此可以将它们加载到装备任何Linux版本的主机上。

该项目旨在建立一个类似Google管理数据中心的途径,如果使用Docker包装软件,不仅可以在私有的数据中心上随意移植程序,更可以将应用搬上一些流行的云服务上——比如AWS。

dotCloud创始人兼CTO Hykes说道:“container就像个盒子,你可以将所有不同的软件产品、平台及系统进行单独封装,因为container的通吃,被封装的应用将无处不在。”

虽然Docker项目刚几个月大,但是其基于的技术已在Linux及其它操作系统上得到长期的验证,其中包括Sun Microsystems建立的Solaris操作系统,同时它让这些技术变得更加容易操作,从而引起了硅谷开发者的深度关注。

eBay,在线网络商城,使用Docker作为新发布软件的测试途径。旧金山初创公司MemSQL,同样也使用Docker作为测试其商业发行版数据库的方法。另一个初创公司CoreOS,更是发布了集成Docker container的Linux版本。

随着规模的变大,应用程序已经不能在单独的主机上运行,Docker的吸引力也日益剧增。就像Google的网络服务,运行在成百上千的服务器之上,而Docker的优势就在于如此庞大系统上的快速迁移。

dotCloud的首席执行官Ben Golub解释道:“当下,有上万种语言及框架供软件开发者选择,他们都在聚焦如何进行大量服务器及不同环境(私有及公共环境)上的快速部署,如果将应用程序和语言当作行,所有的环境作为列,则会发现这个矩阵一直在扩张。然而Docker的目的就在于打破这个矩阵,让用户只需要关心将哪些部分放到container中,同时让服务大玩家不必担心迁移的过程,只需要考虑将container移往何处就好了。”#p# 

 

[[85259]]

 

Hykes与他的团队在一个以丛林为主题的工作环境中打拼,在这个16层,所有的显示器几乎都隐藏在绿植中间。如果巡视整个丛林,或许会在某个角落发现正在啃叶子的小海龟。

讽刺的是,这个正在重构网络服务构建基础工具的团队,正在定义互联网新世界的团队,他们的工作场所似乎在提醒我们机器出现之前世界的景观。

“即使在公开的环境中,员工也都愿意拥有自己的隐私,然而塑料和光秃秃的墙壁绝对不是我们所期望的,所以清新的绿植是个非常好的权衡。”

即使Hykes做如此解释,仍然不能掩盖主题与其工作的大相径庭。然而随着他对Docker的阐述,一切变得不那么矛盾起来。T恤上的鲸鱼诠释了Docker的工作内容,而这些植物代表的正是Docker重新定义互联网的目的和决心,让其变得更加的灵活。就像植物和动物体内独立执行功能并相互通信的细胞一样,Docker将应用程序打散成由代码组成的细胞。

毫无疑问,这才是软件构建最正确的途径。这就意味给整体加入单独的细胞将非常简单,同样意味着独立细胞死亡将不会影响到整体的运行。

在20世纪70年代著名的Xerox PARC研究中心,Alan Kay曾倡导过使用SmallTalk实现这个途径。取代编写一个整体代码,Kay将任务分到不同的单元或者对象中,同样这些单元可以相互通信。通过这个面向对象编程,他可以通过增加新对象来扩展应用程序。

从那以后,类似的创意就一直在软件圈中流传——从编程语言到操作系统。在许多方面, 软件的衍化的终端都是生物系统。通过Docker,Solomon Hykes期望在软件中发展这个想法,并且推动互联网的衍变——更不用说私人网络。

Hykes认为,实体机器、电缆、路由器以及磁盘可以比作是用于计算、存储及交换信息的细胞。#p# 

 

[[85260]]

 

是否还记得那个给PC安装操作系统都头疼的那个时代,那个PC间拷贝文件都非常困难的时代?过去20年,我们解决了所有这些问题,我们确实从Alan Kay的生物学范例上获益良多。

当在苹果机上安装操作系统时,只需要将图表拖拽到一个文件夹中就可以完成。这主要归结于应用程序都通过相关性进行打包,通过非常小的接口与操作系统通信——就像是一个细胞。

CoreOS创始人Alex Polvi认为:“如果应用程序包含了赖以运行的所有需求,那么安装时将避免很多技巧性操作。你只需要去使用,它随时都准备着。”通过同样的途径,你可以简单的在iPhone或者是安卓平板上进行安装。

Docker就采取了这个想法,为服务器提供了这些便利,Docker正致力将服务器软件的安装和运行变得像手机一样的简单。

Google在就做了很多相同的事情,通过被称为Borg的工具。而在Twitter,他们使用了一个类似的开源组件Mesos。Twitter工程副总裁Raffi Krikorian曾说过:“我们可以在一个container中运行服务,然后可以把这个服务在众多主机中转移,而不需要去关心container之间的通信。”

然而Borg和Mesos都极为复杂,由世界上最聪明的科学家建立及维护。对比之下,Hykes的理念则是建立非常易于操作的工具。最初,Hykes的公司提供一个用于Azure、GAE或者Heroku的云服务——一个在线服务,软件开发者可以使用它来完成应用的创建和托管。他们建立Docker用以更好的支撑这个服务,然而拥有丰富开源经验的他们(Hykes及他的团队,包括CEO Ben Golub)迅速认识到这个工具可能帮助到任何在线业务。

这个春天,他们开源了这个创意,并迅速引起硅谷开发者的关注。短短5个月,Docker被下载6万次,项目页每个月的浏览量超过8万人次。通过Golub我们还了解到,超过150个其它项目已经使用了这个软件,包括了云服务Flynn及Dokku。

就像CoreOS创始人Alex Polvi指出的,Docker虽然并不成熟,但是已然获得众多认可,同时这也是未使用虚拟化系统的一大发展趋势,一个非常老道的方法,用户将应用程序从底层系统分离,然后获得很高的灵活性。

Docker的container比服务器虚拟化来的更加简单,并且需要更少的软件。不造成开销情况下,提供了虚拟机的便利,这就意味着它可以让应用程序运行的更快——以及使用更少的服务器。通过eBay的Dziuba了解到,container的发布比虚拟机或者VMs更快。

Dziuba说:“对于我来说,使用Docker container比虚拟机更容易。如果你也觉得让生活更容易的事物将引领潮流,那么‘集装箱化’很显然是未来的趋势。”

责任编辑:王程程 来源: Wired
相关推荐

2009-09-22 09:58:12

2023-06-27 10:41:01

数学论文

2018-07-04 15:05:19

物联网互联网智能化

2012-08-22 16:11:57

Google

2012-06-26 13:18:23

互联网公社

2015-06-24 15:35:54

2018-09-29 14:59:06

互联网数据BAT

2009-07-01 09:13:44

Firefox 3.5浏览器新特性

2012-02-22 10:10:16

2015-04-02 11:17:20

2014-03-25 09:32:09

2019-03-13 09:23:07

物联网互联网高薪

2011-10-27 21:09:01

Google谷歌开发者大会

2019-07-15 08:39:29

互联网中台BAT

2015-10-08 15:20:34

互联网物联网

2014-01-15 14:35:35

云计算

2015-05-28 16:11:07

互联网+

2015-02-09 09:38:23

2015-04-14 14:34:48

辽宁广播电视台微软Windows Azu

2011-06-15 17:26:03

笔记本体验
点赞
收藏

51CTO技术栈公众号