首页>运维>Docker> 文章正文

被弃用的 Docker 会被 Podman 取代吗

来源: Docker 2021-05-12 02:34 阅读: 8
Kubernetes团队近日宣布将在最新版本中弃用Docker支持的功能,后续版本会陆续删除这些功能。

Kubernetes团队近日宣布将在最新版本中弃用Docker支持的功能,后续版本会陆续删除这些功能。

近日,Kubernetes团队发布了最新的1.20版本,新版本更新了许多内容:

存储卷快照功能趋于稳定;KubectlDebug进入Beta;Beta:API优先级和公平性;IPV4/IPV6Alpha功能更新;GA:限制进程PID;Dockershim弃用;Exec探针超时处理等等(详情可查看:http://kubernetes.io/blog/2020/12/08/kubernetes-1-20-release-announcement/)

其中,有一项更新对于开发者社区来说无疑是一枚重磅炸弹:正式宣布弃用Docker支持的功能。那么,究竟Kubernetes为什么要这么做,以及这么做会有什么影响呢?

Docker是一种以容器化的方式打包、分发和部署应用程序的方式。自2013年3月13日初始版本发布以来,Docker已成为容器业界的事实标准。而Kubernetes是一款由Google开发的开源容器编排系统。

Kubernetes架构示意图,来自维基百科

Docker与OpenShift

在2015年的峰会上,红帽发布了OpenShiftV3.0,该新版本OpenShift底层采用Docker容器,同时开始使用Kubernetes来编排镜像。然而,在2016年的红帽峰会期间,Docker对红帽的OpenShift展开了锋芒毕露的攻击。他们不仅发表了以下推文,还给与会者发放带有“我们不接受模仿”字样的T恤衫:

显然左边的仿制鲸鱼就是在嘲讽红帽的OpenShift。当时,OpenShift采用了基于Docker的容器。红帽发布的Docker一般会比原版落后一点点,而且为了提供所谓的“企业支持”,红帽采取了给旧版本Docker打补丁的行为。但相比之下,Docker总是在发布最新版。

当然,对于维护企业应用应该采用升级还是采用移植补丁的方式,到现在依然众说纷纭,所以对于这一点在此不做评论,但Docker在红帽自己的峰会上的这种行为确实有点出乎意料。不得不承认,在此之前Docker是一项伟大的技术,毕竟它是RedShift的重要组成部分,但从那天起,事情就开始变味了。

平台之争

早期的PaaS平台主要是OpenShift,以及两家竞争对手Docker和Pivotal。Docker人所共知就不用多说了,Pivotal是EMC和VMware于2013年创建的公司,专注于开源PaaS的解决方案。他们的企业解决方案非常成功,原因非常简单:用户体验非常好,尤其是结合PivotalLabs使用的时候。

而Docker是企业解决方案的后起之秀,他们的优势就是开发者们早已熟知Docker引擎了。而当时Kubernetes还不知道在哪儿。然而,Docker对OpenShift的攻击行为,使红帽不得不将资源投入到了Kubernetes上。后来的结果大家都看到了,Kubernetes大获成功,并且获得了整个行业的拥护。

此时Docker为了挽回败局而推出了DockerSwarm,但为时已晚。2016年后半年,Kubernetes超过了DockerSwarm,成了行业事实上的标准。最终,DockerSwarm并没有给Kubernetes带来任何冲击。可以认为这是Docker的第一次死亡,从此以后,Docker不再是企业级的PaaS解决方案,只能作为云原生系统中的一部分存在,好在它一直是Kubernetes中的一个重要组成部分。

Kubernetes宣布弃用Docker

近日Kubernetes宣布弃用Docker。

(官网博客链接:http://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/):

这无疑是第二次宣布了Docker的死亡。按照Kubernetes自己的说法,Docker已不再是必须的技术,而是变成了技术债务。1.19版以前的Kubernetes需要通过一个名为Dockershim的模块连接到Docker,然后由Docker连接到Containerd来创建容器。从技术上来看,实际的容器运行时是Containerd,而不是Docker。Docker的作用只不过是在Containerd上创建容器而已。作为人类用户,只需运行一个Dockerrun就可以创建一个容器,这一点非常方便;然而在方便的同时,Docker也带来了许多无用的操作和技术债务,对于Kubernetes而言,这就是负担。Kubernetes完全可以绕过Docker,自己在Containerd上创建容器,从而获得同样的效果。而Kubernetes1.20中就采用了这种做法。

尽管Docker公司的商业模式失败了,但我们必须承认Docker为整个行业做出的巨大贡献。Docker公司带来的技术是业内最好的。时至今日,我们的CI/CD系统还极其依赖Docker。没有Docker,也不可能有Kubernetes的成功,而且Kubernetes依然有Docker的影子。

不过也不用担心,Kubernetes团队已经做了大量的努力,尽可能使升级过程平稳。即使你升级到1.20,也只会收到一个关于Docker已被弃用的警告。目前Kubernetes的计划是在2021年末期发布的1.22中彻底移除Docker支持,所以开发者必须在那之前切换到其他的容器运行时,比如Containerd或CRI-O等。

Docker的替代品

弃用Docker之后,开发者们对其替代品的讨论逐渐热烈,其中Containerd和Podman倍受期待。

Containerd是一个工业级标准的容器运行时,它强调简单性、健壮性和可移植性。它可以管理容器的生命周期,可以被KubernetsCRI等项目使用,并为广泛的行业合作打下基础等。

Podman原来是CRI-O项目的一部分,后来被分离成一个单独的项目叫libpod。Podman的使用体验和Docker类似,不同的是Podman没有daemon。直接通过OCIruntime(默认也是runc)来启动容器,所以容器的进程是Podman的子进程。这比较像Linux的fork/exec模型,而Docker采用的是C/S(客户端/服务器)模型。

虽然目前容器市场Docker还是占用很大的比例,但被弃用的结局已定,在这个过渡期中,不妨去拥抱Containerd和Podman吧!

到此这篇关于被弃用的Docker会被Podman取代吗?的文章就介绍到这了,更多相关Docker替代Podman内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!

您可能感兴趣的文章:docker内网搭建dns使用域名访问替代ip:port的操作用Docker作为PaaS的替代方案是否完美无缺