解读2014之Docker篇:才气、勇气、运气

wp5x 10年前

编者按

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的几个重要的发展节点。

  1. Docker 1.0发布。6月10日,Docker团队宣布发布Docker 1.0版本,从第一个版本到1.0版本的发布,Docker大约经历了15个月的时间,共收到了超过460位贡献者的8741条改进建议。1.0版本的发布也就意味着 Docker可用于生产环境,从发布特性中可以看到,Docker当时重点在关注稳定性、扩展性、兼容性等方面的问题,并没有提及安全事宜。同时从数据中可以看到社区对Docker的贡献。
  2. Docker出售dotCloud。8月4日,Docker宣布出售其平台即业务服务dotCloud,并称接下来将专注于容器业务。CEO Ben表示他们已经看到Docker的快速增长,希望把所有的精力和资源都集中在这项业务上 。从这件事情上可以看出Docker公司的决心,把成败都押在Docker上,何尝不是一种魄力。当然,那时Docker有足够多的用户,他们也很有信心。
  3. 微软全面拥抱Docker。10月,微软宣布下一个版本的Windows Server将支持Docker,同时还发布了Windows 10客户端的技术预览版。Windows Server主要是面向企业市场,显然,微软已经意识到容器技术的发展趋势以及其对企业的意义。比较有意思的是,微软早在之前就开发了自己的容器技术(Drawbridge),而Windows Server却选择支持Docker,可见Docker的势头之猛。
  4. AWS加码押注Docker 。在AWS re:Invent 2014大会上,AWS推出了高性能容器管理服务EC2 Container服务,用户可以在AWS上使用容器轻松地运行和管理分布式应用。AWS是云计算的老大哥,在其EC2上早就支持Docker,这次的容器服务瞄准的是集群服务,也是第一家将Docker应用于集群服务的公有云,AWS果然是IaaS的带路人和领头羊。
  5. Docker发布新的跨容器的分布式应用编排服务。12月4日,Docker宣布发布跨容器的分布式应用编排服务,编排服务可以帮助开发者创建并管理新一代的可移植的分布式应用程序。之前Docker关注的都是单个或者少量的容器,所以我们也经常看到官方用词“Engine”,而编排服务的发布意味着Docker正式进军集群服务,彻底平台化。通过三个新的编排服务(MachineSwarmCompose),用户可以迅速构建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),相关的开源项目有DroneStrider

很少有人提及Docker对SaaS带来的影响,从普通用户的角度来看,Docker可以为他们解决很多苦恼的技术问题。举个例子,之前用户想卖东西,可能就是入驻淘宝这样的平台,一是需要依靠大平台的流量,二是自己根本无法搞定一套电商程序的安装以及维护。有了Docker后,用户拿到的就是镜像,通过几个来回的命令就可以完成安装。所以我认为假以时日,类似Wordpress、Drupal这样的开源软件都会通过镜像的方式交付给用户,用户也会在选择SaaS平台还是自己搭建方面有更多的主动权。同样,得益于Docker,SaaS平台也许会向PaaS过渡。

PaaS方面,Docker已经扎根新一代的PaaS,如果把Azure、Heroku等公有的PaaS看为第一代,允许用户自建PaaS的Cloud Foundry和OpenShift就应该是第二代,那以Docker为首的平台就应该是第三代,主要代表有DeisFlynnTsuru。目前第三代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会教你如何玩好成千上万个容器,并在这么多容器上部署你的应用。当你在几百台服务器上部署几万个容器的时候,KubernetesMesos这些调度框架的作用就显现出来了,所以分布式应用相关的开源软件也是新一年的风向标。

回到国内,2015年Docker会逐渐落地,经过去年一年的发展,Docker已经相对稳定,研究和使用的人越来越多,并且中文资料也开始多了起来。现有的云计算厂商应该会重点关注Docker,并可能在其底层架构中使用Docker,与Docker相关的IaaS和PaaS也会迎来一个创业小高潮,相关的开发者服务商也会提供对Docker的支持。

也许是看武媚娘看多了,每每去思考Docker发展的时候,我都会想Docker又何尝不是下一个“武媚娘”了?如果是,那“武代李唐”的预言会不会再次上演?这一次李唐们会如何做?好戏还在后头。

转自:http://www.infoq.com/cn/articles/2014-review-docker