编者按
2014 年,整个 IT 领域发生了许多深刻而又复杂的变化,InfoQ 策划了“解读2014 ”年终技术盘点系列文章,希望能够给读者清晰地梳理出技术领域在这一年的发展变化,回顾过去,继续前行。
毫无疑问, Docker 已经成为 2014 年最热门的技术之一,它被爱好者冠以云计算新星、下一代虚拟机等称号,可见大家对其的期望之高。2014 年,Docker 的发展可谓是一路凯歌,从年初的 B 轮融资到年末的 DockerCon 欧洲大会,Docker 在这一年里顺风顺水,就连微软、谷歌、AWS 这样的巨头也敬它三分。
InfoQ 从 2014 年 5 月开始重点关注 Docker,先后策划了深入浅出、源码解读、 CoreOS 实战、 Docker 周报等系列专栏,共产出了百余篇新闻与文章,同时还建有两个千人的 QQ 群以供读者学习交流。在这一年里,作为负责 Docker 专栏的技术编辑,我密切关注了 Docker 的每一次融资、收购、合作,也亲身见证了一个技术的发展之路。本文作为 Docker 专栏的年终总结,分析了过去一年 Docker 的发展、模式、应用,并结合自己的理解展望了 2015 年 Docker 的发展以及与它相关的技术变革。
另本文的标题来自热播无胸版电视剧《武媚娘传奇》张公公之口。
发展
2014 年是 Docker 的起步之年,这一年里 Docker 又是融资,又是收购,又是办大会,又是与巨头合作,迅速获得了资本以及云厂商的认可。记得在 6 月的一段时间里,每天早上起来只要一打开朋友圈,就会看到关于 Docker 的爆炸性新闻,想想也是醉了。先撇开 Docker 的优势不谈,我们来回顾下过去一年 Docker 的几个重要的发展节点。
- Docker 1.0 发布。6 月 10 日, Docker 团队宣布发布 Docker 1.0 版本,从第一个版本到 1.0 版本的发布,Docker 大约经历了 15 个月的时间,共收到了超过 460 位贡献者的 8741 条改进建议。1.0 版本的发布也就意味着 Docker 可用于生产环境,从发布特性中可以看到,Docker 当时重点在关注稳定性、扩展性、兼容性等方面的问题,并没有提及安全事宜。同时从数据中可以看到社区对 Docker 的贡献。
- Docker 出售 dotCloud。8 月 4 日, Docker 宣布出售其平台即业务服务 dotCloud ,并称接下来将专注于容器业务。CEO Ben 表示他们已经看到 Docker 的快速增长,希望把所有的精力和资源都集中在这项业务上 。从这件事情上可以看出 Docker 公司的决心,把成败都押在 Docker 上,何尝不是一种魄力。当然,那时 Docker 有足够多的用户,他们也很有信心。
- 微软全面拥抱 Docker。10 月,微软宣布下一个版本的 Windows Server 将支持 Docker ,同时还发布了 Windows 10 客户端的技术预览版。Windows Server 主要是面向企业市场,显然,微软已经意识到容器技术的发展趋势以及其对企业的意义。比较有意思的是,微软早在之前就开发了自己的容器技术(Drawbridge),而 Windows Server 却选择支持 Docker,可见 Docker 的势头之猛。
- AWS 加码押注 Docker 。在 AWS re:Invent 2014 大会上, AWS 推出了高性能容器管理服务 EC2 Container 服务,用户可以在 AWS 上使用容器轻松地运行和管理分布式应用。AWS 是云计算的老大哥,在其 EC2 上早就支持 Docker,这次的容器服务瞄准的是集群服务,也是第一家将 Docker 应用于集群服务的公有云,AWS 果然是 IaaS 的带路人和领头羊。
- Docker 发布新的跨容器的分布式应用编排服务。12 月 4 日, Docker 宣布发布跨容器的分布式应用编排服务,编排服务可以帮助开发者创建并管理新一代的可移植的分布式应用程序。之前 Docker 关注的都是单个或者少量的容器,所以我们也经常看到官方用词“Engine”,而编排服务的发布意味着 Docker 正式进军集群服务,彻底平台化。通过三个新的编排服务( Machine 、 Swarm 、 Compose ),用户可以迅速构建 Docker 集群环境并部署应用,至此,Docker 为 2014 年画上了圆满的句号。
模式
正如热播电视剧《武媚娘传奇》中所说,一个才人的上位需有才气、勇气、运气,Docker 在这一年里能有如此快的发展也与此道理大同小异。才气不多说,从 Docker 一出现大家就很认可它带来的颠覆性的优势,现在流行打标签,如果要给 Docker 写标签,我认为应该有几个词:容器、虚拟化、轻量、可移植、分布式。谈到勇气,不得不提 Docker 的创始人 Solomon(dotCloud 的创始人),在 PaaS 市场举步维艰的情况下,他敢于将自己的核心引擎开源,并让团队的核心成员参与开源项目,以及后来直接把 dotCloud 卖掉,把全部精力都投入到 Docker 的开发上,可谓魄力十足。运气又名天时,近几年,DevOps、微服务、云计算等技术理念如日中天,而 Docker 可以全部和这些技术集成,并且都能为之一颤。
从官方公布的数据来看,截止到 2014 年 11 月,Docker 的贡献者已经超过 700 人,与去年相比增长 52%;Pull Request 数量为 5200 个,增长 37%;GitHub 上相关的项目已达 18000 个,增长 177%;相关的仓库数量已达 65000 个,增长 348%;Docker 的下载量有 6700 万之多,增长 2336%。
一年的时间里,Docker 的生态系统发展迅猛,知名的云计算公司以及软件、操作系统、系统集成厂商、配置管理软件、大数据厂商以及开源软件都在向 Docker 靠拢,不管是在哪个领域,Docker 都在“Doing the old thing the new way”。Docker 相关的生态圈可以参考下图,图片来自 DockerCon 欧洲,需要注意的是图中没有列出国内的云计算公司。
应用
前面提到过,Docker 可以和很多的概念联系到一起,生态圈如此之大,那可以做的事情肯定也很多。但是,现在有多少公司 / 开发者在使用 Docker 了?这个问题真是得打个大大的问号,从平时的采访以及 QQ 群中读者的问题来看,绝大部分人对 Docker 的使用还停留在观望状态,并且将 Docker 应用于生产环境的公司少之又少。记得刚开始追踪 Docker 的时候,我把英文站的一篇新闻中描述Docker 发展的词主观的翻译为了“吹捧”,我认为媒体、社区、厂商对Docker 炒作的声音远大于需求驱动,看似火热而又令人心动的变革其实并不如外表看起来的那么红火。不过,从一个技术的发展角度来看,如此情况也在情理之中。
Docker 的应用和它本身的优势密切相关,系统集成厂商 Flux7 曾总结过 Docker 的一些应用场景,虽然 Docker 目前的实际应用人数并不多,但也不乏最佳实践。开发方面,开发者可以使用 Docker 搭建开发环境,借助 Docker 可移植的特性,开发者可以将自己的环境分享给开发以及相关的测试同事,省去了因为环境搭建而耗费的时间。同时,由于 Docker 可以快速创建并启动一个或多个容器,所以它可以和 Jenkins 一起来进行持续集成(CI),相关的开源项目有 Drone 、 Strider 。
很少有人提及 Docker 对 SaaS 带来的影响,从普通用户的角度来看,Docker 可以为他们解决很多苦恼的技术问题。举个例子,之前用户想卖东西,可能就是入驻淘宝这样的平台,一是需要依靠大平台的流量,二是自己根本无法搞定一套电商程序的安装以及维护。有了 Docker 后,用户拿到的就是镜像,通过几个来回的命令就可以完成安装。所以我认为假以时日,类似 Wordpress、Drupal 这样的开源软件都会通过镜像的方式交付给用户,用户也会在选择 SaaS 平台还是自己搭建方面有更多的主动权。同样,得益于 Docker,SaaS 平台也许会向 PaaS 过渡。
PaaS 方面,Docker 已经扎根新一代的 PaaS,如果把 Azure、Heroku 等公有的 PaaS 看为第一代,允许用户自建 PaaS 的 Cloud Foundry 和 OpenShift 就应该是第二代,那以 Docker 为首的平台就应该是第三代,主要代表有 Deis 、 Flynn 、 Tsuru 。目前第三代 PaaS 也已经成熟,其中 Deis 和 Flynn 都已经发布 1.0 版本,借助 Docker,这些平台可以占用更小的资源。部署方面,新一代 PaaS 平台也可以借助 Docker 实现从开发环境到 PaaS 平台的无缝迁移,可谓从里到外,Docker 都是得力帮手。
IaaS 方面,巨头 AWS 已经推出基于 Docker 的容器服务,老二 Azure 也已经全面支持 Docker,并和官方建立了合作关系。放眼国内,阿里云、腾讯云、UCloud、青云等公司都已经支持 Docker,更进一步的支持看似也没有。同时,新一代的基于 Docker 的 IaaS 也在紧锣旗鼓的设计中(此处省去很多创业公司),Docker 可以提高资源利用率,降低云成本,所以也有很提出了 CaaS(容器即服务)的概念。没有人能够知道在这样的时代 Docker 到底会带来什么样的变革,所以面对如此火热的技术,IaaS 厂商扑上去也容易理解。
2015 年
11 月底, CoreOS 发布了自己的容器引擎 Rocket ,Docker 有了名义上的第一个竞争对手。新的一年,容器之争才刚刚开始,其实微软、谷歌都有自己的容器技术,亚马逊应该也有。如果容器会带来历史性的变革,那容器的战争是早晚的事。CoreOS 发布 Rocket 时称 Docker 已经忘记初心,并且开始冲击生态系统中的其它软件,于是便另起炉灶。现在过去一个多月了,还在 Stage 0 阶段,在社区方面获得的支持远不如 Docker 刚开始的时候,所以我并不看好。单从引擎这一点来看,类似 Rocket 的其它容器引擎并不是没有机会,因为 Docker 也有自己的问题(比如安全),新的一年,更是着重考验它们逼格的时候。
DockerCon 欧洲上,Docker 发布新的跨容器的分布式应用编排服务,旨在简化分布式应用的部署。分布式应用可以保证服务的稳定性和可扩展性,Docker 重新定义了分布式应用之道:我们可以根据需求随意收缩分布式应用节点。之前,Docker 教你怎么玩好一个容器,而现在 Docker 会教你如何玩好成千上万个容器,并在这么多容器上部署你的应用。当你在几百台服务器上部署几万个容器的时候, Kubernetes 、 Mesos 这些调度框架的作用就显现出来了,所以分布式应用相关的开源软件也是新一年的风向标。
回到国内,2015 年 Docker 会逐渐落地,经过去年一年的发展,Docker 已经相对稳定,研究和使用的人越来越多,并且中文资料也开始多了起来。现有的云计算厂商应该会重点关注 Docker,并可能在其底层架构中使用 Docker,与 Docker 相关的 IaaS 和 PaaS 也会迎来一个创业小高潮,相关的开发者服务商也会提供对 Docker 的支持。
也许是看武媚娘看多了,每每去思考 Docker 发展的时候,我都会想 Docker 又何尝不是下一个“武媚娘”了?如果是,那“武代李唐”的预言会不会再次上演?这一次李唐们会如何做?好戏还在后头。
评论