Docker,再见!感谢所有人!

【编者的话】Docker不再是唯一的容器运行时,与Docker所能提供的相比,即将出现的其他容器运行时将更快、更安全、更智能、功能更丰富(其中一些已经如此)。Docker,再见!感谢Docker!感谢所有在容器技术上做出付出与贡献的可爱的人们!

早在 2018年7月 ,我就开始写一篇关于Docker即将消亡的博客文章(也可能是一种技术),但我从来没有抽出时间来完成和发表这篇文章。是时候把那篇文章拿出来了。

好吧. .是时候分享一下我对即将死去的 #docker 的看法了。

当然Docker还在这里,每个人都还在使用Docker,并且在不久的将来还会继续这样做(可预见的将来会有多远——还有待确定)。我之所以选择这个标题作为博客文章的标题,是因为在我看来,Docker作为一家公司的日子已经屈指可数了,或许它也是一种技术。请允许我占用你几分钟的时间,我将与你分享我的想法的基础。

几年前,Docker是一家改变世界的公司,我们可以有把握地说,今天仍然在改变世界。容器和容器背后的技术已经存在多年,远在Docker这个词还没被想到,甚至变成了一个动词(“容器化”所有的应用),但Docker是鼓励大众消费技术的公司。容器,以一种简单容易且时尚的方式存在着。大多数技术公司(或者至少是那些认为自己是现代技术公司的公司)将使用Docker或容器作为其产品或管道的一部分,因为它非常有意义,并为整个流程带来了如此多的好处。

在过去的12-24个月里,人们逐渐意识到Docker已经走完了自己的路,作为一种技术,他们将无法为今天的产品提供额外的价值,并决定从其他地方寻找额外的优势。

Kubernetes赢得了容器编排之战,我想没有人否认这一事实。 Docker本身也采用了Kubernetes 。总会有一些利基玩家拥有特定的Docker Swarm、Mesos、Marathon和Nomad的用例,但事实上的标准是Kubernetes。所有3家大型云服务提供商现在都有一个托管的Kubernetes解决方案,可以提供给他们的客户(最终将会淘汰他们自己多年来开发的自制解决方案,因为只能有一个)。每家云服务提供商都在建设更多的服务,提供更多的解决方案,以吸引更多的客户,增加他们的收入。

故事到这里就结束了,这没什么好看的。接下来是闪亮的东西。

目前,Kubernetes使用docker作为底层容器引擎。我认为Kubernetes社区理解Docker作为一个容器运行时(我特别使用这个术语)是尽快推出产品的最终解决方案。他们也很早就(明智地)认识到,他们需要有一个选择,那就是切换出容器运行时的选项,并最终允许Kubernetes的消费者做出选择。

开放容器计划 带来了 运行时规范 ,它打开了一扇门,让我们所有人都可以使用docker以外的其他东西作为运行时。而且它们还在 稳步增长 。Docker不再是唯一使用的运行时。他们正在社区中成长,社区正在慢慢地分享如何使用Docker之外的其他东西的知识。凯尔西·海托尔——从 CRI-O %20v1.0.0-beta.0)到 containerd 再到 gvisor多年来一直在努力更新他的Kubernetes (坦白说,这是一项了不起的工作)。社区里所有的酷孩子都不再使用docker作为底层运行时。现在有许多其他的选择,比如 clearcontainerskatacontainers ,并且这个列表还在不断地增长。

大多数人(包括我自己)都不具备足够的知识和专业技能,不知道如何将运行时切换到他们想要的运行时,通常只是使用默认的开箱即用的运行时。当人们明白他们可以很容易地选择更换容器运行时,并且知识是现成的、容易获得的,我认为我们没有任何理由再使用docker,因此Docker作为一种技术和一家公司会慢慢消失。与Docker所能提供的相比,即将出现的其他容器运行时将更快、更安全、更智能、功能更丰富(其中一些已经如此)。如果你有一个更好、更智能、更安全的产品——为什么人们会继续使用不再适合他们日益增长的需求的技术呢?

对Docker来说,为了避免这种结果,我建议投入尽可能多的精力,为任何工作负载创建最好的运行时,这样docker仍然是每个人使用的事实上的标准。这里有个问题是,容器运行时没有钱,Docker从来没有在运行时赚钱,他们在容器运行时之上和之上的企业特性中寻找收入。他们将如何解决这个问题,超出了我以及这篇文章的范围。

Docker社区群体一直在稳步下降,受欢迎程度一直在下降,新特性和公告的数量也在下降,而且在过去一两年中一直在下降。

前段时间有人告诉我,说坏话或者告诉别人坏消息通常很容易。我们可以很容易地说这是错的,这没有用,这应该改变。但是如果没有提供一个积极的转折,你就会变成一个悲观的人。“死神”,别做那样的人。

我想听听他们的建议,并在此基础上补充一点,这对你今天意味着什么。你应该开始投资于理解这些其他运行时如何帮助你,在它们合适的地方,增加你的知识和专业技能,这样你就可以做好准备,当其他人停止使用docker时,你会发现自己不得不匆忙地调整所有的基础设施。我认为这是不可避免的。

以上就是我8个月前想写的帖子。。。

促使我今天完成这篇文章的是Scott Mccarty的一篇文章——关于即将到来的RHEL 8 beta版—— Enterprise Linux 8 beta版:一套新的容器工具 ——以及我随后发布的tweet:

这将正式结束docker,,它的创作已经有一段时间了 https://t.co/kBTjpXAzAL

瞧吧,RHEL 8不再有Docker可用了。

如果你是一个容器老手,你可能已经养成了通过安装docker包来定制系统的习惯。在你全新的RHEL 8 Beta系统中,你可能要做的第一件事就是去找你的老朋友yum。你将尝试安装docker包,但是没有成功。如果你很聪明,接下来,你会搜索并找到这个包

podman-docker.noarch : "package to Emulate Docker CLI using podman."

这个podman是什么?Docker包被容器工具模块替换,该模块由Podman、Buildah、Skopeo和其他几个小部件组成。这句话里包含了很多新名字,让我们来看张图。

图片来源:Doug Tidwell我想,此图胜过千言万语了。请自由地分享这篇文章,并在Twitter()上与我分享你的反馈。::Mr.lzc,软件工程师、DevOpsDays深圳核心组织者,目前供职于华为,从事云存储工作,以Cloud Native方式构建云文件系统服务,专注于K8s、容器、微服务领域。