Docker:给云计算插上奔腾的芯

作者:喻勇

Docker:给云计算插上奔腾的芯-banner

20 年前,我们总能在个人电脑的广告结尾,听到标志性的 “Intel Inside” 音乐。随着云计算和移动互联网的兴起,个人电脑的黄金时代早已一去不复返,可是 “Intel Inside” 的模式,仍在继续上演。作为国内 Docker 创业大潮的一份子,借新一届 DockerCon 召开之际,提笔回顾过去两年的所见所感,撰文一篇,与诸君探讨和共勉。 

IaaS is the BIOS of Cloud

在我的职业生涯中,有幸先后在个人电脑时代的霸主微软,和云计算时代的新贵 VMware 这两家伟大的公司工作。他们都是靠平台起家:凭借 Wintel 联盟,比尔 · 盖茨独霸市场三十余载;依靠独特的虚拟化技术,和 Intel x86 体系对 VT 技术的全面支持,VMware 成为企业云计算市场的弄潮儿。

2012 年初我加入 VMware 时,也算赶上了一段黄金时代:彼时 VMware 投入大量资金,网罗全球最顶尖的开发者,全力打造 Cloud Foundry 这一开源 PaaS 平台,我也有幸作为团队成员,参与和目睹当时这一极具前瞻性平台的发展壮大。

0b55b319ebc4b745cb12f75ecffc1e178b8215f7.jpg

[图] Mark Lucovsky

Cloud Foundry 早期的架构师 Mark Lucovsky (他曾担任 Windows NT  核心架构师,Google 技术元老)在一次内部的分享会上语出惊人,Mark 说:“IaaS is the BIOS of Cloud”。这一句话对我印象极其深刻,从那时起,我开始思考,如果今天的公有云、私有云,其本质就是一台(堆)机器,那么在它之上的生态改如何构建?谁又能够主宰未来?

VMware 打造 Cloud Foundry 时,早在 2011 年就引入了类似 Docker 的容器技术,这项技术当年被命名为 Warden。由于种种原因,Warden 技术被作为 Cloud Foundry 的一项后台技术和部署工具,并未提升到任何战略层面。在推广 Cloud Foundry 时,业界已经普遍认为,在 PaaS 类云平台上运行的应用(当时还并无 Cloud Native 一词),其理想的载体应该是类似 Warden 这样的 “容器”,而不是虚拟机。Docker 公司的前身 dotCloud,也是当年开放式 PaaS 大军中的一员, 在进军 PaaS 市场未果的情况下,Solomon Hykes 将 dotCloud 的 PaaS 底层容器技术开源,无心插柳,却成就了今天大家看到的 Docker 生态。

2014 年的夏天,我请了一个星期的年假,认真地观看和阅读了所有能够找到的有关 Docker 的资料。当时,第一届 DockerCon 正在旧金山举办,Solomon Hykes 放出了 “Upgrade the Internet” 的豪言壮语,并公布了 libcontainer、libchan 和 libswarm 这三个重要的项目。在平台厂商工作多年养成的直觉告诉我,Docker 将是一个比 “the BIOS of Cloud” 强大很多的东西。 

我曾把这一周的学习笔记,总结成《Docker 的生态系统和未来》一文,洋洋洒洒写了将近 7000 字,刊登在当年 9 月出版发行的《程序员》杂志上。文章付梓之后,我即向 VMware 公司提出了辞职,义无反顾地踏上了 Docker 的创业之路。

如今,大约两年的时间过去了,再次提笔撰写此文时,新一届的 DockerCon 正在西雅图召开, 4000 余人的参会规模,也又一次刷新了纪录。

一骑绝尘的 Docker

相信本文的读者都是 Docker 技术和生态的密切关注者,代码和架构层面的细节,我也就不班门弄斧了。我尝试带领大家,从两个独特的角度,分析 Docker  技术和社区这两年的发展历程。2014 年我写《Docker 的生态系统和未来》一文时,曾提出可能影响 Docker 发展的几个领域的预言,它们分别是:

1. 开源的独立性

2. 企业客户的接受度

3. 云厂商和 ISV 的参与

4. 上层架构的支持

Docker 公司过去两年做了几轮非常漂亮的融资,在毫无盈利的情况下成功跻身十亿美元估值的独角兽俱乐部,并且仰赖以财务投资者为主的股权架构,成功维持了自己的独立性。坊间曾盛传微软开出数十亿美元的价格意图入主 Docker ,但今天看来,Docker 公司在相当长的一段时间内,都有能力继续保持自身的独立性。

Screen Shot 2016-06-28 at 11.00.12 AM

[图] Docker 公司近年收购列表

频繁融资的同时,Docker 公司这两年的一系列漂亮的收购,如 Tutum、Unikernel、Conductant,每一项都是神来之笔,都为自己的 Docker 生态打下更加厚重的基石。有人曾在朋友圈评论,虽然是 100% 的开源软件,却又牢牢地控制了生态。如此这般,无人能及。

2015 年 DockerCon 的口号是 “Ready for Production”,这并不是一句空话。近一年来,容器技术快速在企业市场渗透,远有美国著名投行高盛公司宣布将把 90% 以上的应用转换为 Docker 容器的形态运行;近有国内金融、制造、能源等领域企业客户全面开花。云厂商和 ISV 的参与,微服务架构的流行,也都印证了我之前文章的预言。

在本届 DockerCon,有两个非常值得关注的细节,也是我想跟大家探讨的角度。

dockercon-day2-2

[图] DockerCon 2016 Ben Golub 现场演讲

Docker 公司的 CEO 名叫 Ben Golub,每一届 DockerCon,他都是第一个开场致辞的嘉宾。历届 DockerCon,Ben 的致辞时间都很短,内容结构高度一致:社区发展规模、代码贡献者人数、各地 meetup 建设、DockerHub 镜像数量、下载量等等。圈内曾流传这样的笑话:Ben 的 DockerCon PPT 模版近些年来从未曾改过,唯一变化的,就是其中的数字。但就是这些简单的数字,描绘了 Docker 生态一骑绝尘的轮廓。在此我只提取一组数据与各位读者分享:

时间年份 全球范围内 Docker  Hub 镜像总下载数量
2014 年夏:旧金山  DockerCon 275万次
2014 年冬:阿姆斯特丹  DockerCon 6700万次
2015 年夏:旧金山  DockerCon 5 亿次
2015 年冬:马德里  DockerCon 13 亿次
2016 年夏:西雅图  DockerCon 41 亿次

上面这张表格,如果用普通直角坐标系画一张时间和数量的关系图,将是一条极其陡峭向上的直线,即使采用对数坐标,也能呈现非常高的增长斜率。

“凡构建平台,得开发者得天下”,Docker 凭借其容器镜像标准,在开发者社区的普及程度呈几何级数快速蔓延。过去两年,有 CoreOS、rkt 等试图挑战 Docker,另立标准,但如同当年的 Intel x86 + Windows 的庞大生态,一旦形成了“平台-开发者-标准” 这样的三足鼎立,循环反馈的形态,其他新兴生态妄图打破这样的铁三角,是及其困难的。

本届 DockerCon,另一个值得关注的细节,是 SwarmKit。有关 SwarmKit 的定位和架构,大家可以搜索孙宏亮撰写的系列文章,这里我不再赘述。SwarmKit 的发布,使 Docker Engine 的能力大大增强,开启了 Docker Engine “超大规模集成电路” 的高度集成化之路。早年的 Docker Engine,只是 Linux LXC API 的封装,随着 Machine 和 Swarm 这两个项目的高速推进,Docker Engine 完成了几个实质性的飞跃:

首先,Docker Engine 通过 Libcontainer 项目,将 LXC 抽象,初步实现了操作系统的无关性,为今后支持 Windows 等非 LXC/CGroup 内核架构提供了可能性;

第二,通过集成 Volume Driver、内建网络虚拟化能力,在容器层屏蔽了底层存储和网络资源的细节,为今后容器级别的软件定义存储和网络打下了基础;

第三,本次发布的 SwarmKit 项目和 SwarmNode,使 Docker Engine 从单一节点走向了集群形态。

Docker 项目虽然开源,但是 Docker 公司同时挥动镜像标准和 Docker Engine 这两面大旗,互为犄角,相辅相成,不仅牢牢地控制了生态,还在此基础上发展壮大,根基日益牢固,不得不令人佩服。 

历史总是惊人的相似

“以史为鉴,可以知兴替”,这句话在如今的 IT 行业同样适用。当年,Intel 的 x86 架构芯片并非市场上唯一的选择。可能很多年轻人并不了解,上世纪 90 年代初,微软开发的 Windows NT 操作系统,曾同时支持 IA-32、MIPS、DEC Alpha、PowerPC、Itanium、x86-64 和 ARM 等多种处理器架构。随着 Wintel 联盟的巩固, Intelx86 架构芯片的能力逐渐加强,迅速形成了垄断的形态,其他处理器架构,也随之烟消云散。

每次提到 Intel,大家都会想到耳熟能详的摩尔定律:“集成电路上可容纳的元器件的数目,约每隔 18-24 个月便会增加一倍,性能也将提升一倍”。Docker 镜像的庞大生态,其中以 Docker 标准交付的软件,和 Docker 镜像在全球范围的下载使用数量,将成为新的“摩尔定律”,在相当长的一段时间内,保持着线性高速的增长,带动“平台-开发者-标准”这个三足鼎立的雪球滚滚向前,势如破竹。

在最初的 386 时代,Intel 的 CPU 仅仅完成整数型运算,类似浮点数运算等基本操作,都需要靠协处理器完成;如今, Intel 的 CPU (包括其南北桥芯片组),已经把诸如浮点运算、显卡、声卡、网卡等之前相对独立的组件(部件)统统集于一身。本次 Docker Engine 的增强和 SwarmKit 的发布,也预示了 Docker 开始走集成化的道路,SwarmKit 以原生插件的方式强势进入 Docker Engine,结束了 “Docker 只能管理单机” 这一困扰业界三年之久的难题。

随着 Docker Engine 集成度的提升,存储和网络等底层资源适配对接范围的扩大,Docker 将为云计算这台巨大计算机插上“奔腾的芯”。不论是 Amazon AWS 还是 Microsoft Azure 等公有云,还是 VMware、OpenStack 等私有云,其最终形态都是一组可以自动化调度的计算、网络和存储资源的集合,Docker 容器技术的出现,将在这一系列异构资源之上,架设一个独立、抽象、开发者认可、应用程序兼容的层级。如同当年的 x86 芯片和其上的操作系统 API,帮助开发者免除了以机器语言对接特定硬件的苦恼,Docker 也将抹平各类公有和私有 IaaS 云平台的差异,营造天下大同的云端新生态:云上的应用采取 Docker 镜像构建,通过 Compose 标准定义组件关系并声明资源需求,借助 SwarmKit 完成部署,通过 Docker Engine 和 Machine 来调度底层的硬件(IaaS 云平台)资源。这画面太美,恰似一江春水向东流,几家欢喜几家愁。

云计算厂商现在已经开始加速拥抱容器,Docker Inside 的格局,正在迅速形成。也许用不了多久,AmazonAWS 视频广告的结尾,将会出现一只跃出海面的鲸鱼。

当正反馈形成时,无人能够阻挡

比尔·盖茨在 1995 年出版的《未来之路》一书中提出了著名的正反馈循环:事实标准常常通过经济机制在市场上发生演变,这种经济机制与推动商业成功的正向螺旋的概念十分相似,它使一个成功推动另一个成功,这一概念叫做正反馈,它说明事实标准之所以常常出现在人们寻求兼容性的时候的原因。

Docker 就是处在正反馈循环的事实标准,这样的循环,以巨大的生态势能,裹挟大量的上下游厂商。未来,Docker 的生态走向将会朝何处去?请容许我做一些大胆的预测:

1. 公有云厂商加速跟进。

本次 DockerCon 发布的 Docker for AWS 和 Docker for Azure 就是一个鲜明的例子,当 Docker 成为云端分布式应用(Cloud Native)的编排和交付标准,就已经奠定了其公有云入口的高贵身份。

2. 分布式存储和网络虚拟化厂商将加速 Docker Native 的支持步伐。

近些年来,随着超融合概念和软件定义网络、软件定义存储的兴起,产生了大量不依赖专用硬件,仅靠普通 CPU 运算来完成的 “纯软件” 存储和网络厂商,这些厂商不仅撼动了 Cisco、EMC 等老牌企业的市场份额,也正在加速对接 Docker 的庞大生态。大家可以看一看这一届 DockerCon 赞助商的名单,存储和网络领域涌现了大量的新生力量。Docker Engine 为存储和网络厂商提供了一个入口,由于这两个领域的复杂性和背后的企业级功能的需求,注定了将产生一个庞大的第三方市场。

3. 容器编排、调度等开源社区将遭遇洗牌。

以 Docker 目前的发展势态,形成了 Docker Engine 为核心,加上 Machine、Swarm/Swarmkit 和 Compose 三架马车的布局。“卧榻之侧,岂容他人鼾睡”,这几个领域关系到了 Docker 未来发展,在这个领域的第三方项目,如实现集群管理的第三方工具 Mesos、Kubernetes、各类开源 Compose 扩展插件等,将会发生巨大的格局性变化。

4. 微服务架构的应用开发将迅速流行。

绝大多数从头开始的全新互联网应用架构选型,都会认真考虑微服务架构和容器化交付。

5. 目前 Docker 容器技术在企业市场的托张将逐步走向“深水区”。

企业客户的选择,将从“人云亦云”、“是容器就要试试”的情况,过渡到全面评估,深入理解 Docker 原生生态的阶段,也将从实验性的小规模测试,逐步过渡到打造 Docker 原生数据中心(Docker Native Datacenter)的阶段。

结束语

当每一朵云都贴上 Docker Inside 的标签,谁会是这场游戏的赢家?谁会在生态的大战中独善其身,谋求一席之地?让我们拭目以待!

One thought on “Docker:给云计算插上奔腾的芯

Leave a Reply

Your email address will not be published. Required fields are marked *