[转帖]Docker与k8s的恩怨情仇(四):云原生时代的闭源落幕
https://zhuanlan.zhihu.com/p/388840887
在本系列前几篇文章中,我们介绍了从Cloud Foundry到Docker等PaaS平台的发展迭代过程。今天我们继续来为大家介绍Docker走向落寞的原因以及大航海时代的开启。

Docker的商业化
上篇中,我们讲到了Docker项目利用自己创新的Docker Image瞬间爆红,于是许多商家也从中发现商机,纷纷推出自己的容器产品,也想在市场中分一杯羹。
CoreOS推出了Rocket(rkt)容器,Google也开源了自己的容器项目lmctfy(Let Me Container That For You)等,但是面对Docker项目的强势,就算是Google这种大佬也毫无招架之力。因此Google打算和Docker公司开展合作,关停自己的容器项目,并且和Docker公司一同维护开源的容器运行,但是Docker公司方面很强势的拒绝了这个明显会削弱自己地位的合作。

在这时Docker公司也意识到了,自己仅仅是云计算技术栈中的幕后英雄,只能当做平台最终部署应用的载体。但是,要想成为这个领域的核心,就应该有自己的PaaS生态。在Docker爆火,有了充足的资金之后,Docker公司开始了疯狂的买买买来扩充自己的实力,其中最出名的就署名Fig。Fig是出名的Docker Compose项目的前身。通过这些并购与自身研发迭代,Docker公司最终推出了以自己为核心的PaaS三件套:Docker Compose、Docker Swarm以及Docker Machine。
下面简单为大家介绍一下Docker三件套的内容:
1、Docker Compose:Compose的前身,是一个仅有两个人维护的Docker容器编排的开源项目Fig,它的功能是:假如现在用户需要部署一个应用A和一个数据库B以及负载均衡C,那么Fig就允许用户把ABC三个容器定义在一个配置文件中,并且指定它们的关联关系。最后只需要一条命令fig up即可直接使用。
在Docker大火的时候,Fig项目在Github上的热度堪比Docker,因此在2015年Docker公司将其收购,并且改名为Docker Compose,作为Docker容器的编排工具,并且使用至今。
2、Docker Swarm:Swarm是Docker的集群管理项目,其主要的逻辑就和上一节讲过的Cloud Foundry类似,可以以类似于docker run 我的镜像的命令行方式,以docker run -H 我的Swarm集群API地址 我的镜像这样将Docker运行成一个集群并且进行管理,Swarm的出现将Docker项目从一个普通的容器升级成为PaaS平台。
3、Docker Machine:Machine应该是Docker三件套里最不出名的,它的功能是将虚拟机运行成容器,并且可以以管理Docker容器的方式管理虚拟机。
Docker通过三件套迅速成为了当时行业内的霸主。此外,Docker公司还做出了一个更加惊人的动作:将公司名由dotCloud改名为Docker,并且将Docker注册成了自己的商标,开展自己的商业化路径。但是这样做同时也意味着,其他公司使用Docker就要给Docker公司支付大额的授权费用,这种商业化垄断的行为,严重侵犯了其他容器玩家的切身利益,这为Docker以后的没落埋下了伏笔。
OCI的“不作为”到CNCF出现
在发展之路上,Docker公司在Docker开源项目的发展上始终保持着绝对的权威和发言权,并且在多个场合用实际行动挑战到了其他玩家的利益;另一方面,Docker公司的商业化路径严重侵害了曾经的合作公司RedHat的切身利益;再加之,Docker在2015年间的高速迭代表中现出了各种不稳定的breaking change开始让社区叫苦不迭。
人红是非多,更何况Docker还抢了大家的蛋糕。于是,容器领域的其他几位玩家开始商讨“切割”Docker项目的话语权。最终,Docker公司迫于压力,于2015年6月22日,牵头了CoreOS、Google、RedHat等公司,共同成立了一个中立的基金会,并将自己的容器运行时LibContainer捐出,改名为RunC,基金会依据RunC共同制定了一套容器和镜像的标准和规范——OCI(Open Container Initiative)。
OCI的成立,意味着容器运行时和镜像的实现与Docker项目完全剥离,让其他玩家不依赖Docker实现自己的Docker运行时成为可能。
但是,由于成立基金会只是Docker公司对这些大公司的妥协,并且其当时确实维护着数量足够庞大的社区,因此Docker公司对基金会的成立有恃无恐,并且对标准的制定并不关心。因为在当时的大环境下,Docker自己的实现,已经就是业界统一的标准了。

由于OCI基金会发展十分缓慢,因此Google、RedHat等基础设施领域的头部玩家打出了手中的王牌,共同牵头成了一个名叫CNCF(Cloud Native Computing Foundation)的基金会(这也是云原生这个概念第一次出现在大众视野内)。CNCF基金会成立的思想基础是,以Kubernetes项目为基础,建立一个由开源基础设施领域厂商主导的按照独立基金会方式运营的平台级社区,来对抗以Docker为核心的容器商业生态。也正是这个基金会的成立,我们第二节的主人公Kubernetes也开始崭露头角。
Kubernetes的出现与发展
Kubernetes是Google公司早在2014年就发布开源的一个容器基础设施编排框架,和其他拍脑袋想出来的技术不同,Kubernetes的技术是有理论依据的,即:Borg。Borg是Google公司整个基础设施体系中的一部分,Borg是Google公司整个基础设施体系中的一部分,Google也发布了多篇关于Borg的论文作为其理论支持。其上承载了比如MapReduce、BigTable等诸多业界的头部技术。因此Borg系统一直以来都被誉为Google公司内部最强大的“秘密武器”,也是Google公司最不可能开源的项目,而Kubernetes就是在这样的理论基础上开发的。下图是Google Omega论文所描述的Google已公开的基础设施栈。

开源vs闭源

面对k8s的出现,一场Docker和k8s之间的容器之战就此打响。
在这场对抗之初,由于Kubernetes开发灵感和设计思想来源于Borg,Kubernetes项目在刚发布时就被称为曲高和寡。太过超前的思想让开发者无法理解,同时由于Kubernetes项目一直由Google的工程师自行维护,所以在发布之初并没有获得太多的关注和成长。
然而,CNCF的成立改变了这一切,RedHat的长处就是有着成熟的社区管理体系,并且也有足够多的工程能力,这使得Kubernetes项目在交由社区维护开始迅速发展,并且逐渐开始和Docker分庭抗礼。并且和Docker的封闭商业模式不同,Kubernetes反其道而行之主打开源和民主化,每一个重要功能都给用户提供了可定制化的接口,并且普通用户也可以无权限拉取修改Kubernetes的代码,社区有专门的reviewer以及approver,只要你写的代码通过PR通过了代码审核和批准,就会成为Kubernetes的主干代码,这也大大的增加了Kubernetes的活力。并且,依托于开放性接口,基于Kubernetes的开源项目和插件比比皆是,并且依托于优秀的架构设计,微服务等新兴的技术理念也迅速落地,最终形成了一个百花齐放的稳定庞大的生态。
而Docker只能通过自己的工程师修改,在这一点上与Kubernetes相比就与远落下风。
总结起来:

面对Kubernetes社区的崛起和壮大,Docker公司不得不承认自己的豪赌以失败告终,从2017年开始,Docker将Docker项目的容器运行时部分Containerd捐赠给了CNCF社区,并且在当年10月宣布将在自己的Docker企业版中内置Kubernetes项目,这也标志着持续了近两年的容器编排之战落下帷幕。2018年1月,RedHat公司宣布斥资2.5亿美元收购CoreOS,2018年3月,这一切纷争的始作俑者Docker公司的CTO Solomon Hykes宣布辞职,至此,纷扰的容器技术圈尘埃落定,天下归一。
总结
本文为大家介绍了Docker是如何在PaaS平台中成为焦点,又如何一步步被Kubernetes替代。下一节我们将继续为大家介绍Kubernetes除了社区之外,在本身的容器编排技术上是如何降维打击Docker公司的,敬请期待。
更多精彩内容,可以关注葡萄城技术博客:
[转帖]Docker与k8s的恩怨情仇(四):云原生时代的闭源落幕的更多相关文章
- Docker与k8s的恩怨情仇(四)-云原生时代的闭源落幕
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在本系列前几篇文章中,我们介绍了从Cloud Foundry到Docker等PaaS平台的发展迭代过程.今天 ...
- Docker与k8s的恩怨情仇(七)—— “服务发现”大法让你的内外交互原地起飞
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 第一章:Docker与k8s的恩怨情仇(一)-成为PaaS前浪的Cloud Foundry 第二章:Dock ...
- Docker与k8s的恩怨情仇(一)—成为PaaS前浪的Cloud Foundry
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 大家在工作中或许或多或少都接触过Docker,那你知道Docker以及容器化背后的原理到底是什么吗? 容器化 ...
- Docker与k8s的恩怨情仇(六)—— “容器编排”上演“终结者”大片
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在上节中,我们为大家介绍了Pod的基础内容,Kubernetes如何站在上帝视角上处理容器和容器之间的关系. ...
- Docker与k8s的恩怨情仇(八)——蓦然回首总览Kubernetes
在系统介绍了如何实际部署一个K8S项目后,作为本系列文章的最后一篇,我们一起来看看Kubernetes集群内容总览,再对一些更深层次的功能进行总结. Kubernetes总览 下图是一个k8s的总览结 ...
- Docker与k8s的恩怨情仇(二)—用最简单的技术实现“容器”
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上次我们说到PaaS的发展历史,从Cloud Foundry黯然退场,到Docker加冕,正是Docker& ...
- Docker与k8s的恩怨情仇(三)—后浪Docker来势汹汹
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上一节我们为大家介绍了Cloud Foundry等最初的PaaS平台如何解决容器问题,本文将为大家展示Doc ...
- Docker与k8s的恩怨情仇(五)——Kubernetes的创新
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上节中我们提到了社区生态的发展使得Kubernetes得到了良性的发展和传播.比起相对封闭的Docker社区 ...
- [转帖]从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑?
从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑? 2019-10-08 10:26:28 阿里云云栖社区 阅读数 54 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ...
- 50篇经典珍藏 | Docker、Mesos、微服务、云原生技术干货
概念篇 全方位探(tian)索(keng)Mesos各种存储处理方式 老肖有话说@Mesos User Group第四次约会 技术实践 | Mesos 全方位“烹饪”指南 回顾 JAVA 发展轨迹,看 ...
随机推荐
- Unix IPC
本文主要是摘抄 APUE 中 IPC 部分的内容 IPC(Inter Process Communication)进程间通信,是指在进程之间进行通信的一种方式,本文将简要介绍一下在 Unix 中存在的 ...
- Triple DES 加密解密技术解析
摘要:本文介绍了Triple DES加密解密技术,通过实例演示了加密和解密过程,并对算法原理进行了简要分析.同时,探讨了Triple DES在现代信息安全领域的应用和局限性. 3DES(Triple ...
- Nignx快速入门
Nginx快速入门 一.简介 产生的背景:当一台服务器同一时刻被大量客户端请求访问时,访问量超出服务器请求范围,服务器处理不过来,发生宕机或者丢失连接情况下,产生了Nignx反向代理技术. Nginx ...
- 云小课|MRS基础原理之Hudi介绍
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:Hudi是数据湖的 ...
- JVM内存模型,你看这一篇就够了
摘要:JVM是一种用于计算设备的规范,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的. 本文分享自华为云社区<[云驻共创]JVM内存模型的探知之旅>,作者:多米 ...
- 13个VSCode使用技巧,开启高效的开发模式
摘要:VsCode是一款开源的编辑器,拥有强大的功能,.由于拥有各种各样的插件,这就使得VsCode可以做到的事情更多了.在使用的过程中,也是有很多技巧的,掌握一些技巧对于后期写代码也会轻松很多. 本 ...
- 手把手带你玩转LiteOS Ping组件
摘要:本期小编为大家带来LiteOS开源版本Ping组件的使用说明,请跟随小编的步伐一起进入探索之旅吧! 本文分享自华为云社区<LiteOS组件尝鲜-玩转Ping>,作者:Lionlace ...
- 插件化架构设计(3):前端可视化化平台插件架构-grafana实践
插件实践方案 其实插件你就把它当一个组件来用就好.用起来就是异步组件加载. vue异步组件加载,看官方文档:https://cn.vuejs.org/v2/guide/components-dynam ...
- LAS Spark+云原生:数据分析全新解决方案
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着数据规模的迅速增长和数据处理需求的不断演进,云原生架构和湖仓分析成为了现代数据处理的重要趋势.在这个数字化时代 ...
- MAC zsh:no matches found
jimmy@MacBook-Pro bin % wsdl2java http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asm ...