似曾相识
时间并没有过去多久,但就是感觉Docker的历史很长的似的。我是在2015年夏天加入红帽的,也就是OpenShift 3.0 GA的那个夏天。这是一个了不起的事件,因为它标志着将平台重新设计到Kubernetes上,而Kubernetes本身也刚刚发布了v1.0版本(这与GKE正式GA的时间段相同,如果你能相信它有那么老的话)。和很多人一样,我对Kubernetes和OpenShift一无所知,对Docker也绝对不了解。一直到秋天,我对这三者才有了较深入的了解,很自然地在几个月后就爱上了这个生态系统。
第二年春天,是我第一次 "真正"接触Docker公司。我没有参加2016年的红帽峰会,但我清楚地记得,那一年是Docker真正第一次对红帽OpenShift做出对外对抗的举动,是在红帽自己的活动上。他们当时送出了以下衬衫。
image.png
简单总结一下,这是对红帽将补丁打到旧版本软件的模式的抗议(即所谓的"企业支持")。红帽当时发布的Docker版本只是略微落后于最新版,而Docker发布的是他们最新的版本。我不会去讨论为什么这很重要的细节,因为今天仍然有一个争论,那就是对一个组织来说,回溯补丁与保持在最新版本上哪个选择更优(后者在最近一段时间已经变得相当好)。这一点意义重大,因为直到那个时候,Docker还是OpenShift吹牛过程中不可或缺的一部分。我们把一个和另一个一起卖掉,我们大多数人甚至所有的人的基本假设是:Docker只是一个伟大的技术。回想起来,这应该是意料之中的,因为Docker公司开始商业化之后,突然间就不再只是一项伟大的技术了。
一切或许早已注定
早期的平台大战,我称之为平台大战,主要集中在OpenShift、Docker和Pivotal周围。Pivotal在早期就已经在企业组织中取得了重大进展,这是有充分理由的:平台体验相当不错。再加上Pivotal实验室,你就有了一些很好的机会。Docker是后起之秀。它是行业的宠儿,大放异彩,它拥有每个人都想要的技术,或者每个人都已经在使用的技术。Kubernetes当时还是个问号。我花了很多时间与组织讨论Kubernetes的核心和细节,以及为什么它很重要,或者更准确地说:为什么它应该对他们很重要。Docker敲打OpenShift的举动,迫使红帽开始关注Kubernetes和Linux,而不是其他任何东西。这招奏效了,业界也跟上了,于是Kubernetes就火了。
还以为自己处于行业宠儿状态的Docker迅速做出了反应: 推出了Docker Swarm,众所周知,它始终没有真正流行起来。Swarm最终淹没在整个行业对Kubernetes的关注中,这是它第一次死亡:它输掉了平台大战,成为云原生生态系统中的第一个牺牲品。2016年下半年,才是Kubernetes真正边缘化Swarm的时候。这一点,在第二年春天的DockerCon2017大会上,当演讲者在大舞台上展示Docker与Kubernetes的整合时,主题演讲演示就能证明。值得注意的是,那是DockerCon最后一次大放异彩的"大"事件。从那以后,就是Kubernetes/CNCF的展会的天下了。
Docker的技术债务
就在之前,Docker还是Kubernetes不可或缺的一部分,它们的关系就像下面描绘的那样:
image.png
在Kubernetes过去的19个版本中,一直使用的就是这个链条。所有的一切,仅仅是为了起动一个有容器的pod。Docker从必需品变成了技术债。而在这一切中,社区一直辛苦到现在,Docker将在下一个版本1.20中被废弃。社区已经(理所当然地)背负了多年Docker的技术债务,以确保在docker守护进程无处不在的情况下,行业有它所需要的最无缝的体验。以下是已经存在了一段时间,但将在1.20及以后正式进入启用的调用链:
image.png
这是一个伟大的简化,也是对一致性的回归。为了帮助大家直观地了解为什么要这样做,我鼓励大家把Docker看作是容器之上的一个平台抽象,而容器只是一些Linux结构的集合体。这种抽象的一部分涉及到docker平台和containerd之间的整合,后者今天可以说是作为最流行的容器运行时而存在。Docker从来不是运行时。Docker只是让containerd和其他Linux构造变得容易工作,这样容器管理就会变得轻而易举。而不是用十几行代码来创建和部署一个正在运行的容器,你需要的只是:
docker run
但和任何平台一样,这种便利性也伴随着大量的臃肿和技术债务。尤其是随着时间的推移。docker的移除和containerd的优化标志着云原生环境的一种文化转变。这些都不是要否定Docker公司。如果没有Docker公司,Kubernetes就不会有今天的成就。这是一个事实。Docker公司推动的技术和竞争是这个行业有史以来最棒的事情。现在,就将开源技术转化为盈利的商业模式而言,Docker Inc很可能会被研究成一个警示性的昙花一现。不过,我们还是要分清公司的贡献与商业模式。目前,Docker平台剩下的,是它在Kubernetes平台中的影子。尽管它确实在CI/CD生态系统内强势生存,而且,从表面上看,Dockerfile
也是事实上的标准。这证明了Docker公司曾经拥有的力量,它的技术活得远远超过了公司的淘汰期,直到社区创新赶上了它。由于平台上多年来的臃肿,平台左侧的其他领域摆脱Docker守护进程的债务,其实只是时间问题。
虽然它曾有过一段神奇的历程,对行业产生过不可磨灭的影响,但实际上,Docker已经死了……
原文链接:https://www.tariqislam.com/posts/kubernetes-docker-dep/
参考:
网友评论