Docker三年回顾:梦想依在,人生正当年

来源:InfoQ 作者:孙宏亮
  

信息化,一个不可逆转的潮流,潮流之下,发展是一个亘古不变的话题。

IT界同样如此,半年一浪,三载一潮,技术的迭代之快令人咂舌。5年前的Hadoop,3年前的OpenStack,到如今之Docker,无一不是一浪高过一浪。说到发展,谈及热度,目前容器领域的新技术Docker,绝对是受到IT界前所未有的关注,因此也时常有人调侃:出门不知Docker,实乃IT从业人员难以启齿的隐痛。

作为三年前刚刚诞生的新生儿,Docker已然给云计算、应用交付等多个领域带来巨大的革新。细谈Docker,我们却发现,Docker背后的容器技术,其实并非首创,早在十数年前,容器技术便已有雏形,那究竟为何Docker的席卷之势空前之大。不论是技术领域有什么独到之处,还是时势造就了如今大好的局面,我们都没有理由不来细细品鉴Docker这三年来的种种发展。

什么是Docker?

狭义而言,Docker是一款轻量级容器的管理引擎软件。云计算时代,可以帮助用户轻松实现分布式应用的“Build, Ship, Run”。

广义而言,Docker是一家以容器服务为基础的硅谷公司,试图改变传统应用的构建与交付方式,创造应用模式的新时代。目前,从市场发展与技术影响而言,Docker凸显了极大的潜力。

回顾Docker的三周年,从技术的发展到公司的运营,从产品的布局到生态的建设,我们不由得感慨,下一个巨人是否就是这家logo是鲸鱼的公司。

Docker诞生

三年前的云计算,提到最多的关键字无疑是IaaS(Infrastructure-as-a-Service,基础设施即服务)。企业往往通过IaaS技术建立起信息化的数据中心,有效地管理池化资源。如果历史的发展仅仅满足于此,那么科技也就会停滞不前。

当时,在加州湾区以Solomon Hykes为首的几位天才工程师就在尝试,能否在资源之上,架构出一套完善的分布式平台,有效快速帮助用户的应用系统平稳运行。他们的公司实体也就是Docker的前身dotCloud。经历了一段时间的试水之后,历史并未遂这群极客的愿,dotCloud云战略的运营并非成功。

然而,常言道,失败是成功之母,这句话印证在dotCloud身上再适合不过。失利的同时,Solomon敏锐地嗅探到了,dotCloud体系的中的容器技术,反倒是解决了目前市场上用户应用构建、分发和发布的诸多痛点。痛定思痛,Solomom迅速技术转型,开始投向容器技术,并从一开始就开源,当时就吸引了为数不少的开发者。

时间定格在2013年3月,容器技术定名为Docker,原力诞生。

技术演进

诞生仅仅意味着不平凡的开始。后来的3年时间中,Docker立足技术,服务用户,培育市场,建立生态,发展历程可圈可点。

开源、轻量级、API标准

开源、轻量级、API标准,可以说是Docker在2013年起步时最重要的三大法宝。开源,吸引开发者,培养并壮大社区;轻量级,引发容器与虚拟机之间的众多思考,创新之下,带来的是对未来无限的想象空间;API标准,看似不经意,事实却帮助Docker大大降低了上手门槛,同时也在最早时间占领了重要的高地——用户的使用习惯。

数据为王

新手的三板斧,着实有模有样。而后的一年之间,Docker的定位似乎异常清晰,那就是围绕镜像,围绕Docker Hub,构建全球最庞大的镜像仓库。信息化时代,时常传有这样的一句话:技术可以复制,而数据无可复制。Docker Hub这个镜像仓库越是庞大,意味着Docker的用户群体的数量越惊人。

进军生产环境

2015年初开始,Docker一直谋求在企业生产环境中有所突破。随着社区的壮大,Docker Engine的发展也异常的快。Engine在逐渐成熟的过程中,经历了多次蜕变。Engine自身架构模块化的发展;在内核级别保障Docker化应用更高的隔离性;存储方面支持更多的驱动,如:aufs、devicemapper、BtrFS、overlayFS、ZFS等;同时在日志管理等方面逐渐集成第三方优秀产品。Engine功能的完善与稳定性提高,是Docker生态的一大基石。在此基础上,Engine上层的容器编排工具(Compose)与集群管理工具(Swarm)迅速走入世人眼线,并与集群创建工具(Machine)合力,意图构建容器生态的三驾马车。

进军生产环境之路,绝非一朝一夕,Docker同样招来了一些质疑。最令人深刻的,当属CoreOS与Docker的竞争。标准,无疑是如今行业的兵家必争之地。当时,容器标准和镜像标准迅速成为焦点。好在,最终在DockerCon 2015上,Solomon和CoreOS的创始人Alex Polvi最终握手言和,而Docker也将自己的容器技术实现libcontainer共享给Linux基金会,成立runC项目,与基金会一起建立并维护容器标准,此事对于整个容器生态而言,绝属一个利好消息。

集群能力

三架马车的初具形态,容器标准的建立,依然无法掩盖外界对Docker在某些方面的诟病,诟病最多的当属Docker网络能力以及集群能力的薄弱。如果不能满足分布式应用的需求,Docker的未来难免存在阴影。2015年年末1.9.0版本的发布,则标志着Docker补上了自身的最后一块短板。无需借助第三方工具,Docker即原生支持跨主机容器的直接通信。其中,主要借助Docker Engine原生支持overlay网络来完成。

除了网络能力的重大突破,Docker的存储能力逐渐变得开放。Docker镜像方面,开始采用内容寻址方式,提高镜像利用率与安全性;容器存储方面,开放volume接口,方便用户集成第三方的存储解决方案,如Flocker、ScaleIO等。

集群能力的完善,给用户带来的体验绝对空前。自此,Docker的一体化世界已成形态,在容器领域形成一个巨大的工具链生态。

融资与收购

技术的迭代同时,Docker在资本市场的斩获也是捷报频传。融资的逐渐做大,也恰恰适应Docker的发展势头。Docker公司从2013年开始,一共经历了多轮融资,而且累计金额高达1.5亿。融资金额的巨大,意味着Docker将来一定要上市IPO,从而给投资方以回报。Docker的诞生至今,已经积累了大量的开发者,开发者市场可谓规模惊人,但是投资者和Docker都清楚,依靠开发者市场很难盈利,而上市IPO则必须有业绩,企业市场似乎就成了一条必经之路。纵观Docker的发展,不论是收购的步伐,还是产品的演进,商业化的意味也是逐步弥漫开来。

Docker公司及其前身在融资方面的进展详见下表:

融资金额 宣布日期 估值 领投者 投资者数量
D轮 1800万美金 2015年11月 - -
D轮 9500万美金 2015年4月 - Insight Venture Partners
C轮 4000万美金 2014年9月 4亿美金 红杉资本
B轮 1500万美金 2014年1月 - Greylock Partners
A轮 1200万美金 2011年3月 - -

资本的推动背后,Docker在收购方面,一直步步为营,循序渐进。从工具的吸纳,到平台的支持,到生态的构建,

  • 2014年7月,Docker收购Orchard掀起了收购的序幕,随后立即将Orchard的产品Fig更名为compose,成为Docker最重要的项目之一进行维护,辅助完善Docker容器的编排业务。
  • 同年10月,Docker收购Koality,加速企业版DockerHub的开发,从而在企业级工作流程以及应用生命周期管理方面提供更自动化,更高效的服务。
  • 2015年的3年,Docker和SocketPlane走到了一起,容器的网络能力得到一定程度的突破,SocketPlane在SDN方面的经验,也帮助Docker成功孕育了后期libnetwork项目的发展。
  • 同年同月,Kitematic拥抱Docker,容器的自动化配置部署也帮助Docker在用户市场占领更大的份额。
  • 去年10月,震惊容器界的大新闻无疑是Docker对于Tutum的收购。这一举动将Docker的意图表现得再明显不过,容器化企业级应用的部署与管理版图初步完善。
  • 今年年初,Unikernel与Docker的结合,则和以往的并购案稍显不同。也许Docker早已察觉到在未来的容器世界中,操作系统是一个有待革命的领域。如何实现操作系统的精简,进而更好的支持容器的运行,很有可能是操作系统的变革之路,比如CoreOS的起点,也是基于这样的理念。
  • 3月初,另一个大新闻则是Docker对于Conductant的收购。要知道Conductant的团队是Aurora项目的创始者,而Aurora则是Mesos之上最为成功的框架之一,用于支持长任务的运行以及周期性的任务。此举的意图无需多谈,对于应用的编排管理,Docker已经不甘示弱,奋起直追,力求与Kubernetes和Marathon正面竞争。

Docker公司的收购案例详见下表:

日期 收购公司 收购金额 定位
2016年3月 Conductant 未知 应用集群调度
2016年1月 Unikernel Systems 未知 进入OS市场
2015年10月 Tutum 未知 补充容器运行时
2015年3月 Kitematic 未知 快速自动化配置部署
2015年3月 SocketPlane 未知 提高容器网络能力
2014年10月 Koality 未知 加速DockerHub企业版
2014年7月 Orchard 未知 提供服务编排

产品布局

资本可以支撑Docker的运作,收购则是Docker技术与产品的补充。围绕“Build,Ship,Run”这一宗旨,Docker提供了一系列极大方便DevOps团队管理应用的集成产品。进一步深入,你会发现Docker已经提供了4类不同的产品:

  • Docker解决方案
  • Docker工具箱
  • 软件基础插件
  • 开放工业标准

不论是公有市场,还是企业化的私有市场,Docker的解决方案完全覆盖了两个领域。公有的Docker Hub以及基于Tutum的Docker公有云,极大的满足了公有云容器市场。而商业版的Docker Engine,Docker Trusted Registry以及UCP,则作为企业市场的三件套,形成完善的DDC(Docker Data Center),构建一体化的Docker数据中心。

针对开发者市场,Docker ToolBox则是一个专为开发者设计的工具包,从而实现云原生分布式应用的构建与运行。强大的工具包中几乎涵盖了Docker全部的开源项目,如:Docker Machine、Docker Swarm、Docker Compose、Docker Registry、Docker Engine以及Kitematic。

更为底层的基础设施工具,Docker提供了RunC来支持通用容器运行时;Notary可以帮助用户完成受信内容的传输分发;Unikernel则可以精简用户操作系统的,从而使应用的运行更高效更安全;

开放工业标准方面,Docker领导成立开放容器项目(The Open Container Project),并将其贡献给Linux基金会,与Linux共同构建容器格式与运行时的开放工业标准。截至到今天,全球已经有诸如Amazon、Google、Microsoft、redhat等50家公司宣布支持该项目。而RunC项目则是专为OCP而生的容器项目,从此容器标准完全可以基于RunC来发展。

生态之争

纵观历史,没有哪项技术发展之快犹如Docker。伴随技术的发展,Docker生态的成长之势也是如此。

容器引擎一向是容器技术的核心部分。随着OCP的成立,runC已经成为容器生态中的工业标准,而Docker也借助自己在用户群体方面的压倒性优势,成为容器引擎领域的事实标准。生态内相同的容器引擎,当然还包括CoreOS团队开源的rkt项目,然而在用户以及社区活跃度方面,都和Docker存在较大的差距。

坐拥庞大的用户群,又有容器领域事实标准的优势,看似一家独大的局面形势大好。然而生态之争早已和一年前的形势大有差别。虽说容器标准之争暂告一段落,但接踵而至的则是更为激烈的容器编排(Container Orchestration)之争。

容器编排是目前容器生态中最为聚焦的话题,几个容器的管理并非难事,而调度、管理和监控大规模可扩展的容器集群则是一个巨大的挑战。其中涉及的技术难点更多、更棘手,比如:多种类型的任务的处理,容器的最佳运行节点的规划,故障恢复,存储共享,负载均衡等。容器编排的生态之争,远比想象中的激烈。除了立足容器标准的Docker之外,老将、新兵均有参与。

Mesos,作为分布式系统资源调度的先驱,很大程度上解决了大规模集群的资源问题,其提出的DCOS理念也逐渐被世人知晓。配合Mesosphere的Marathon的应用框架,可以说Mesos借助Docker的大潮,似乎看到了二次春天。然而如何和Docker更紧密的结合,发挥Docker原生的能力,则是Mesos亟需解决的问题。

Kubernetes(k8s),其内部原型是Google内部拥有10年左右成功运营经验的Borg平台,目前支持Docker,对外开源。对于k8s的诞生,似乎从来没有人质疑过Google的超大规模容器集群管理能力。换言之,生态之争,k8s始终站在令人高山仰止的位置,然而这也未必不是一件好事。从用户群体以及容器技术的角度而言,亲Docker或是避Docker,Kubernetes并没有太多的选择,而通过容器编排这一绝对制高点出手,通过3至5年的时间发展,或许有能力达到不错的收效。市场往往也不是技术一点来左右的,若不能撼动Docker的用户基础以及无法应对Docker容器技术拒绝开放的可能性,都将有可能让Kubernetes面临被动。Kubernetes必须让用户接受两套标准:即Docker标准以及k8s自身标准,不得不说这是一种无奈之举。对于Docker Engine的高速发展,k8s无法完全兼容,更是在Docker容器的滞后支持上表现出了一定程度的疲态。总结而言,隔着Docker,接触用户,试图落地,会有不少挑战。

Docker至今仍然视“Build,Ship,Run”为宗旨,编排(Orchestration)也许正在酝酿,至少布局之中,并未有太多的显露,当然本月初对于Conductant的收购,可能是较为明显的一步棋。如果说完备的工具链是进入企业市场的第一步,那么强大的容器集群编排将会满足企业内部进一步的需求。三年的时间,Docker把绝大部分的精力放在完善容器上,然而容器(Container)和应用(Application)之间总是隔着不可逾越的鸿沟。反观Docker,细细玩味,Docker定义的内容全部是容器的原语,只有在Docker Compose一层存在薄薄的应用原语。坐拥用户群与标准,高举“Docker Native”的大旗,在帮助用户转变应用模式方面,Docker责无旁贷。应用编排领域,Docker给外界的感受一直是不紧不慢,大有成竹在胸之态。生态之中,其他玩家最担忧的恐怕就是“Docker的釜底抽薪”了,也就是在开源的Docker Engine中添加更多的商业化考量,从而使得自身的竞争处于绝对的优势。担忧是一方面,Conductant的加入也让局势变得更加扑朔迷离,“应用”二字不再回避,瞬间应用编排生态在台面上呈“三足鼎立”之势。

未来展望

Docker三周年,IT界巨变的三年,巨变的是应用模式,是容器生态,是编排技术,更是千万软件工程师对时代的思考。

厚积薄发,会是Docker未来几年内的最准备描述。而应用编排领域的竞争势必会更加白热化,鹿死谁手,三足鼎立抑或是百家争鸣,犹未可知。作为一个容器生态的参与者,很幸运能亲历时代的变迁。

还是那句话,发展是一个亘古不变的话题,而这十年,你会相信是Docker引领吗?

作者简介

作者简介:孙宏亮,DaoCloud技术合伙人,主要负责DaoCloud企业级容器云平台的研发。对系统Docker化与微服务架构有丰富的经验,目前已出版《Docker 源码分析》一书,也是国内第一批研究及实践Docker的工程师,同时也是国内社区极具影响力的Docker布道者。 


时间:2016-03-22 19:22 来源:InfoQ 作者:孙宏亮 原文链接

好文,顶一下
(0)
0%
文章真差,踩一下
(0)
0%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量