Docker与k8s的恩怨情仇(四)-云原生时代的闭源落幕
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
在本系列前几篇文章中,我们介绍了从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三件套的内容:
- Docker Compose:Compose的前身,是一个仅有两个人维护的Docker容器编排的开源项目Fig,它的功能是:假如现在用户需要部署一个应用A和一个数据库B以及负载均衡C,那么Fig就允许用户把ABC三个容器定义在一个配置文件中,并且指定它们的关联关系。最后只需要一条命令fig up即可直接使用。
在Docker大火的时候,Fig项目在Github上的热度堪比Docker,因此在2015年Docker公司将其收购,并且改名为Docker Compose,作为Docker容器的编排工具,并且使用至今。
Docker Swarm:Swarm是Docker的集群管理项目,其主要的逻辑就和上一节讲过的Cloud Foundry类似,可以以类似于docker run 我的镜像的命令行方式,以docker run -H 我的Swarm集群API地址 我的镜像这样将Docker运行成一个集群并且进行管理,Swarm的出现将Docker项目从一个普通的容器升级成为PaaS平台。
Docker Machine:Machine应该是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的恩怨情仇(七)—— “服务发现”大法让你的内外交互原地起飞
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 第一章:Docker与k8s的恩怨情仇(一)-成为PaaS前浪的Cloud Foundry 第二章:Dock ...
- Docker与k8s的恩怨情仇(一)—成为PaaS前浪的Cloud Foundry
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 大家在工作中或许或多或少都接触过Docker,那你知道Docker以及容器化背后的原理到底是什么吗? 容器化 ...
- Docker与k8s的恩怨情仇(八)——蓦然回首总览Kubernetes
在系统介绍了如何实际部署一个K8S项目后,作为本系列文章的最后一篇,我们一起来看看Kubernetes集群内容总览,再对一些更深层次的功能进行总结. Kubernetes总览 下图是一个k8s的总览结 ...
- Docker与k8s的恩怨情仇(二)—用最简单的技术实现“容器”
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上次我们说到PaaS的发展历史,从Cloud Foundry黯然退场,到Docker加冕,正是Docker& ...
- Docker与k8s的恩怨情仇(六)—— “容器编排”上演“终结者”大片
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在上节中,我们为大家介绍了Pod的基础内容,Kubernetes如何站在上帝视角上处理容器和容器之间的关系. ...
- Docker与k8s的恩怨情仇(三)—后浪Docker来势汹汹
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上一节我们为大家介绍了Cloud Foundry等最初的PaaS平台如何解决容器问题,本文将为大家展示Doc ...
- Docker与k8s的恩怨情仇(五)——Kubernetes的创新
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上节中我们提到了社区生态的发展使得Kubernetes得到了良性的发展和传播.比起相对封闭的Docker社区 ...
- 云原生时代, Kubernetes 多集群架构初探
为什么我们需要多集群? 近年来,多集群架构已经成为“老生常谈”.我们喜欢高可用,喜欢异地多可用区,而多集群架构天生就具备了这样的能力.另一方面我们也希望通过多集群混合云来降低成本,利用到不同集群各自的 ...
- 云原生时代,Java的危与机(周志明)
说明 本篇文章是转载自周志明老师的文章,链接地址:https://www.infoq.cn/article/RQfWw2R2ZpYQiOlc1WBE 今天,25 岁的 Java 仍然是最具有统治力的编 ...
随机推荐
- ft2000安装tigervnc
apt update apt install tigervnc*vncserver :88 history >>history
- Linux xargs命令-(转载)
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从 ...
- GPIO模式用法
浮空,顾名思义就是浮在半空,输入直接与寄存器挂钩: 开漏,输出0的时候 PMOS管导通IO输出Vdd,输出1的时候 NMOS管导通IO输出Vss(Cmos场效应管): 推挽,输出时候电平确定,同样使用 ...
- xml 解析之 JDOM解析
JDOM 是一种使用 XML 的独特 Java 工具包,用于快速开发 XML 应用程序.JDOM 是一个开源项目,它基于树形结构,利用纯 Java 的技术对 XML 文档实现解析.生成.序列化及多种操 ...
- Navigation activity回退到fragment失败
我有一个activity--MainActivity, 布局中设置了一个 <androidx.fragment.app.FragmentContainerView android:layout_ ...
- Python小白的数学建模课-03.线性规划
线性规划是很多数模培训讲的第一个算法,算法很简单,思想很深刻. 要通过线性规划问题,理解如何学习数学建模.如何选择编程算法. 『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛 ...
- 解决1字节的UTF-8序列的字节1无效问题
学习路上碰到了这个异常 解决方法如下: 1.手动将< ? xml version="1.0" encoding="UTF-8"?>中的UTF-8更改 ...
- C# HTTP请求对外接口、第三方接口公用类
/// <summary> /// 网络数据请求公共函数 /// </summary> public class HttpWebRequestCommon { #region ...
- 图分析Rapids cuGraph
图分析Rapids cuGraph 英伟达(Nvidia)建立的新的开源库可能是推进分析和使图形数据库更快的秘密要素. 在Nvidia GPU上进行并行处理. Nvidia很久以前就不再只是" ...
- Solon Auth 认证框架使用演示(更简单的认证框架)
最近看了好几个认证框架,什么 Appache Shiro 啦.Sa-Token 啦.Spring Security啦...尤其是Spring Security,做为对标 Spring Boot &am ...