Docker 终失 C 位,开源少年缘何黑化

cbf25155a25f1c220d2e5f23ad221abd.gif

作者 | 马超

出品 | CSDN(ID:CSDNnews)

开源真是火了,近些年成功的IT项目像TensorFlow、RocketMQ、TDEngine都是开源项目,而且这种火爆还出了圈,连带着RISC-V这种准开源的芯片也成为了各方争抢的香饽饽。但是如果仔细观察这一片开源火爆的背后其实也有不少隐忧,由于开源只是一种松散、开放的合作方式,这种合作方式往往能够带来人们意想不到的高价值产出,但由于目前主流的开源协议往往没有对于后续价值分配做出严格约定,这也就造成了诸如“某大厂上开源耻辱墙”、“开发者上门要索要代码”的闹剧频频出现,但这些小纷争和开源巨大的利益蛋糕比起来都是小场面,目前开源界的三大战役主要是Dockers vs k8s、红帽Linux vs Cent OS以及亚马逊 vs Elastic,而这其中Docker的发展轨迹最为典型,也最值得我们思考。

b67105c78b5680c487b2128dbb921a21.png

bb362da649c1dcc883be2c560bc0085d.png

Dockers Desktop收费如饮鸩止渴,加快与k8s的分手历程

近期,Docker 公司更新了旗下产品的订阅策略,其中最显著的变化是Docker Desktop条款的修改。Docker Desktop 对于同时满足雇员少于 250 人,年收入少于 1000 万美元的小型企业、个人、教育和非商业性开源项目仍然免费。但是大中型企业则需要它需要付费了,价格每个用户每月 5 美元起。

虽然收费条款有5个月的宽限,但是而对不断商业化的Docker,开源替代产品也开始跃跃欲试,比如像Podman UI、lima都是不错的选择。而最令人唏嘘的是Docker这样一位开源界的三好学生,为什么会有如此之大的转变。

1d11126be5cb349b23110fe7a77327c1.png

Docker-曾经的屠龙少年

天下武功唯快不破,在云计算的江湖从虚拟机到容器,再到Serverless莫不如此。十年前OpenStack的发布让云计算正式进入了虚拟机的IaaS时代,OpenStack凭借其开源、开放的特性,使得私有云的创建门槛大幅度降低,理论上讲任何掌握了OpenStack开发能力的企业都可以自行创建和提供云计算服务。

当时的云计算,本质上都是基于虚拟机的,OpenStack可以将一些性能强劲的物理服务器,拆分成若干个虚拟机,提供给用户使用,但虚拟机还是太重了。即使是飞天集群,新增部署虚拟机的时间也是以分钟来计的。但是互联网上的机会往往转瞬即逝,分钟级的等待对于用户来讲就是不能忍受的煎熬,因此瘦身版的虚拟机也就是容器开始走入了大家的视野。

通俗的讲,容器就是基建狂魔版的云平台,虽然传统的基建技术安全性更高,稳定性也更好,但是从头修路、盖房、装修成本太高时间也太长,而容器本质上是一个最小运行环境的镜像,只要给点阳光就能野蛮生长,而且用完以后想拆也很方便,是应对云时代流量冲击的神器。目前Docker几乎已经成了容器的代名词,每个网民都接受过由Docker提供的服务,IT人在日常工作中肯定都接触过Docker,Docker作为容器技术的始祖,以一个憨态可掬的小鲸鱼形象出现,在刚刚出场之际就将Vmware旗下的Paas平台-Cloud Foundry斩于马下。

2013年开始,云计算的PaaS大幕开启。在PaaS时代,云计算的最小使用单位从虚拟机变成容器。最早出现流行开来的PaaS平台是由Vmware创立的CloudFoundry。2012年在帕特.基辛格正式接手Vmware以后,就开始在PaaS方向发力,Cloud Foundry正是基辛格亲手打造出来的拳头产品,通过应用托管功能。开发者只需要通过一条简单的命令,就可以将整个项目打包,上传到Cloud Foundry,而Cloud foundry主机集群中,找到满足用户需求鹤机,通过容器化技术,解压并运行用户的项目包,并快速对外提供服务。令人感叹的是历史总是这样的对称美,Cloud Foundry在被Docker打败之后,基辛格回归英特尔推出的首款拳头产品至强三代Ice Lake有一款专门针对docker的增加型号-8352v,这个型号在高密度容器部署方面有奇效,这段往事读者可以参考前文《溢价5倍欲将Sifive收入麾下,英特尔的绝地反击战》、《超异构时代“炼金术”,开发者表示“惊艳”》这里不加赘述了。

除了基本的容器功能以外,Cloud Foundry还提供应用分发、监控,标准化灾备体系等等服务,Cloud Foundry将程序员从繁重的运维任务中解放出来,让开发者不需要再去关心运行平台的资源使用状况。但是Cloud Foundry并没有把工作做到极致, 其打包功能一直为外界所诟病。开发者甚至要为每个应用版本应用打一个包,其带来的调试成本之高令人咋舌,甚至有人抱怨在Cloud Foundry所花费的调试时间远远高于开发一款新的应用。

8b85370081929b248d116e178dc1fb54.png

Build once,Run anywhere这句响亮的口号就是Docker打败Cloud Foundry的最大秘决, Docker与Cloud Foundry相比其底层技术都是namespace和cgroups,但是Docker很好的考虑了应用打包的一致性与复用性问题,并提出了镜像这种创新式的解决方案,完全可以做到三分钟部署一个Nginx集群的效果,正是这种对程序员的友好特性,让Docker成功取代Cloud Foundry成为当之无愧的C位。

ce83f51e186041f694c37fe3b6ee0a25.png

痛失标准话语权,Docker埋下隐忧

Docker成为C位后,巨头们也看到了容器方面的商机,CoreOS推出了Rocket容器,Google也推出了lmctfy容器,但是面对简洁易用的Docker,即便是开源界无往不利的Google也败下阵来,推出不久之后lmctfy容器项目就被关停,
幸福来得太快也让Docker有点飘了,在得到大笔融资之后Docker公司开始了疯狂的买买买,不过Docker之前一直是靠开源社区的力量发展壮大的,靠收购打造出的容器三件套:DockerCompose、Docker Swarm以及DockerMachine明显有点水土不服。不过这倒是影响不大,在有了容器三件套之后Docker正式把公司的名字由原来的dotCloud改名为Docker,并且将Docker注册成了商标全面开启商业化之路。

这一系列的动作基本宣告了之前的开源少年已经开始了商业化的转身,这也就意味着,未来云厂商要容器就要向Docker公司支付授权费用,这一系列的动作让容器领域的众多玩家对于Docker产生了警惕,过旧暴露的商业化意图,让云厂商们感到自身利益受到威胁,Docker没落的种子就此埋下。

2015年,Docker在同行巨大的压力下,他们牵头成立了OCI(Open Container Initiative)基金会,并将自己的容器运行时LibContainer改名为RunC捐赠给OCI,由OCI与容器各方共同制定容器和镜像的标准和规范。但是当时的Docker基本没怎么把OCI放在眼里,而且凭借自身的用户优势对于对于标准的制定也是漠不关心。现在回顾起来放弃标准制订的话语权,也是后来K8S有勇气和Docker说再见的主要原因,虽然OCI在Docker的缺位下发展缓慢,但接下来出场的CNCF(Cloud Native Computing Foundation)基金会却是个真正的狠角色,随着CNCF的出现,Kubernetes也就是K8S终于登场了。

fba438f6f17197b906bf8b17c301949d.png

3526dc632d31af9ecd7ce13fc2892ac0.png

君以此始,必以此终,Docker终失C位

K8S是Google在2014开源的一款容器编排项目,一开始K8S只算是一个Google一个人参与的独角戏,但CNCF带来的社区力量改变了这一切,由于这个时候Docker已经在商业化的道路上一去不返了,不久以后K8S社区就开始和Docker分庭抗礼了,而且逐渐有后来者居上的趋势,基于K8S的微服务等新兴技术框架迅速流行开来,最终使得以K8S为代表的容器编排平台成为了云原生时代的C位。面对CNCF的迅速发展壮大,Docker不得已将自己的Containerd捐赠给了CNCF,并且在2017年10月在Docker企业版中默认内置K8S平台。

如果说Docker打败Cloud Foundry依靠的是简洁、简单的微创新,那么K8S对于Docker就是降维打击了,Docker Swarm编排工作只是站在容器视角处理问题,而站在K8S的角度上,容器只是一个运行时的环境,Pod和Service才是K8S编排建模中所考虑的重点,只要符合标准的容器运行时都可以做为Pod进行编排,也就是说K8S对于所有容器一视同仁,用户是否用Docker根本无所谓。在取得优势身位以后,K8S果断开始了去Docker化的动作,在去年年底,CNCF官宣在K8S的1.20版本中Docker能够正常使用,但是会有警告提示,而1.22版本以后,则移除Docker的支持。这其中最大的影响那些用到Docker API的应用都将不能在K8S平台上运行了。

正如刚刚所说Docker在如日中天的时候对于运行时的标准漠不关心,这也使得很多Docker的增强功能是由Docker Shim组件提供的专属API来完成的,但是Docker Shim并不属于标准的容器运行时,这也就意味着K8S甩掉Docker时根本没有什么太大的负担,而且Docker目前在商业化道路上与CNCF社区渐行渐远,K8S目前作为云原生时代的C位,完全没必要为企业版的Docker去背书。

目前DockerDesktop企业版收费的做法并不是一个明智之举,以目前Docker的江湖地位,各种开源替代产品比比皆是,商业化的动作只会加快他们与开源社区的分手历程。不过拿了人的总是手短,接受融资就要受制于资本,Docker的历程在开源界也算典型,比如Red Hat在被IBM收购以后就停掉了免费版的Cent OS项目,如何平衡免费、开放的理念与商业化利益之间的关系,是整个IT界都需要仔细考虑的问题。

作者:马超,CSDN博客专家,阿里云MVP、华为云MVP,华为2020年技术社区开发者之星。

cdeb6eb38bbe414cd518216fe3499231.gif

a184352f612cb865c7f7dde611ab4c47.png

往期推荐

做安全操作系统,这位技术老兵很认真

这个高薪行业正在大量招人!

如何给女朋友解释什么是“元宇宙”?

张一鸣购得元宇宙入场券,谁将是头号玩家?

871fb0bfcce563b39f4f093a31b5d63c.gif

点分享

f6931aca78664692896087422f528510.gif

点收藏

8c503b95655a8e537843b7f4511e42b8.gif

点点赞

9c613cf928e5f258ce9fb2b51a3994a5.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中油即时通信电脑版_市场营销之即时通讯营销

✎IM营销又叫即时通讯营销(instantmessaging),是企业通过即时工具im推广产品和品牌,以实现目标客户挖掘和转化的网络营销方式。封面设计丨Sweety 责编丨花花第60篇丨每日一篇好文:2645字丨5分钟阅读即时通讯营销常用的主要有以下两种情况:第一…

java组合框的事件有哪些_博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理...

博为峰小博老师:在JList类中有addListSelectionListener()方法,可以检测用户是否对JList的选取有任何的改变。在ListSelectionListener接口中只定义一个方法,那就是valueChanged(ListSelectionEvente),所以必须实现这个方法&#…

使用 Arthas 排查 SpringBoot 诡异耗时的 Bug

简介: 公司有个渠道系统,专门对接三方渠道使用,没有什么业务逻辑,主要是转换报文和参数校验之类的工作,起着一个承上启下的作用。最近,在优化接口的响应时间,优化了代码之后,但是时间…

关于数据库,你可能最想知道的几件事

【CSDN 编者按】随着技术不断更新,数据库的发展可谓全面开花,也吸引了越来越多人的关注,但大家真的都足够了解数据库吗?作者 | 易璜珵 责编 | 侯淼淼出品 | 《新程序员》互联网飞速发展的时代里,数据库、中间件和…

java反编译工具_JDA Java反编译工具的下载和使用手册

JDA(javadecompile analysis)是一款以dex为核心的java反编译工具,同时支持apk、dex、jar文件的反编译,支持动态重命名。该软件主要是用来反编译分析代码而不是反编译出来完全正确的java代码,运行需安装jdk1.8及以上版本版本(jdk1.7应该也行)。…

OpenKruise v0.8.0 核心能力解读:管理 Sidecar 容器的利器

简介: OpenKruise 是阿里云开源的云原生应用自动化管理套件,也是当前托管在 Cloud Native Computing Foundation (CNCF) 下的 Sandbox 项目。它来自阿里巴巴多年来容器化、云原生的技术沉淀,是阿里内部生产环境大规模应用的基于 Kubernetes 之…

请把ios文件解压出来是什么意思_【张小亮】最新版本行会3。中文版本。解压即玩。...

电脑游戏目录【回复:电脑游戏】手机游戏目录【回复:手机游戏】【张小亮】最新版本行会3。中文版本。解压即玩。【名称】行会3【大小】4.12 GB【版本】v0.9.9【系统】电脑游戏【下载】本文中【往下滑】【安装】1。请下载【好压】这款解压软件进行解压。2。…

数据结构是如何装入 CPU 寄存器的?

作者|码农的荒岛求生来源|码农的荒岛求生有同学问了这样一个问题:既然CPU内部的寄存器数量有限,容量有限,那么我们使用的庞大的数据结构是怎样装入寄存器供CPU计算的呢?这篇文章就为你讲解一下这个问题。内存与数据真正有用的程序…

基于WASM的无侵入式全链路A/B Test实践

简介: 我们都知道,服务网格(ServiceMesh)可以为运行其上的微服务提供无侵入式的流量治理能力。通过配置VirtualService和DestinationRule,即可实现流量管理、超时重试、流量复制、限流、熔断等功能,而无需修改微服务代码。 本文所…

网易游戏基于 Flink 的流式 ETL 建设

简介: 网易游戏流式 ETL 建设实践及调优经验分享~ 网易游戏资深开发工程师林小铂为大家带来网易游戏基于 Flink 的流式 ETL 建设的介绍。内容包括: 专用 ETLEntryX 通用 ETL调优实践未来规划 一. 业务背景 网易游戏 ETL 服务概况 网易游戏的…

potplayer 多个进程_创建守护进程的步骤

什么是守护进程?答:守护进程是后台运行的、系统启动是就存在的、不予任何终端关联的,用于处理一些系统级别任务的特殊进程。实现思路:实现一个守护进程,其实就是将普通进程按照上述特性改造为守护进程的过程。需要注意…

mysql 走索引 很慢_MySQL优化:为什么SQL走索引还那么慢?

背景2019-01-11 9:00-10:00 一个 MySQL 数据库把 CPU 打满了。硬件配置:256G 内存,48 core分析过程接手这个问题时现场已经不在了,信息有限,所以我们先从监控系统中查看一下当时的状态。从 PMM 监控来看,这个 MySQL 实…

华为徐直军:以持续创新加快数字化发展

【中国 深圳】2021年9月23日,华为全联接大会以线上形式举行,今年的全联接大会以“深耕数字化”为主题,汇聚了业界思想领袖,商业精英,技术大咖,生态伙伴等,探讨如何深入业务场景,把数…

大型 Web 应用插件化架构探索

简介: 随着 Web 技术的逐渐成熟,越来越多的应用架构趋向于复杂,例如阿里云等巨型控制台项目,每个产品下都有各自的团队来负责维护和迭代。不论是维护还是发布以及管控成本都随着业务体量的增长而逐渐不可控。在这个背景下微前端应…

高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术

简介: 我们需要通过激光的内部机制和数据处理算法,将这些噪声恢复到它本来的位置。本文会从MTA问题产生的原理、激光应对MTA的内部机制、数据处理算法三方面来介绍高精资料处理是如何解决这个问题的。 1.背景 1.1 高精资料采集 高精采集车是集成了测绘…

pytorch 图像分割的交并比_「通知」《深度学习之图像识别》再版工作启动,欢迎指导和提建议...

不知不觉有三第一本书也上市超过1年半了,第一次写作略显稚嫩,许多细节处理不当,比如没有在印刷前核对公式,被删掉了参考文献影响读者阅读体验等。现在本书正式启动再版工作,注意不是重印,是再版。重印只是修…

mysql实例怎么复制_Mysql实例MySQL数据库复制概论

《Mysql实例MySQL数据库复制概论》要点:本文介绍了Mysql实例MySQL数据库复制概论,希望对您有用。如果有疑问,可以联系我们。导读:每当我们讨论一项(新的)领域技术的时候,最好的方式通常是首先抛出一些问题,这些问题大致分为三类&a…

app inventor离线版_百度要哭了!今日头条出了搜索引擎了,还做了APP

今天小编为大家送上几条新闻了:1 微软给Edge浏览器添加离线小游戏谷歌浏览器在不联网的情况下,会有一个小恐龙跳一跳的游戏,而最近换上chromium内核的edge,也添加了自己的离线小游戏。这是一款冲浪游戏,非常类似于微软…

打车业务下单高并发解决方案

简介: 打车业务下单高并发解决方案前言 在技术领域有一条准则,即不存在银弹技术。在实际工作中,通常无法通过几项简单的技术组合就解决实际业务中各种场景下的复杂问题。虽然追求架构的简单简洁也是架构师的目标之一。但必须认识到架构的简单…

Serverless 时代 DevOps 的最佳打开方式

简介: 传统软件开发过程中,开发和运维是极其分裂的两个环节,运维人员不关心代码是怎样运作的,开发人员也不知道代码是如何运行的。 作者 | 许成铭(竞霄) 来源 | 阿里巴巴云原生公众号 DevOps 简析 传统软…