当前位置: 首页 > 知识库问答 >
问题:

docker - k8s是不是不支持Docker了?那应该学什么呢?

孙成化
2024-10-03

如题,好像k8s不再支持docker了,那应该学哪个容器化技术呢?

共有2个答案

吴松
2024-10-03

首先k8s并不是不支持docker了,而且底层不再依赖于docker,而是依赖于 CRI (Container Runtime Interface)

你可以把CRI当作一个接口,而docker是其中的一个实现。这样就明确了吧?之前 k8s 底层依赖具体的实现类 Docker,现在依赖换成了 接口 CRI,而 class Docker implement CRI,现在搞明白了吗?

这样意味着 k8s 底层可以支持任何实现了 CRI 的容器技术,不但更轻量扩展也更容易,并不是docker本身过时了。

更详细的描述可以参考k8s官方blog对这个现象的描述: https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-a...

此外,由于现在的容器技术都是标准的CRI规范,所以并不影响你学了docker别的容器技术就不会用了。相反你学好了docker,其他容器技术也可以快速上手甚至由于接口的通用性你还可以平滑迁移。

比如我以前用docker,现在用podman。doocker学到的容器知识完全可以平滑迁移套用到podman上。

巴宏恺
2024-10-03

k8s是不是不支持Docker了?那应该学什么呢?

回答

k8s是否不再支持Docker?

  • 不完全是。虽然Kubernetes(k8s)的官方从某个版本开始(如1.24及以后)不再直接支持Docker作为默认的容器运行时,并移除了对dockershim的维护,但Docker的容器镜像格式仍然被containerd等运行时所支持,因此你仍然可以在Kubernetes集群中使用Docker镜像。

为什么k8s不再默认支持Docker?

  • 主要原因是Docker的功能相对复杂,而Kubernetes作为一个容器编排工具,其核心是需要一个轻量、稳定且可依赖的容器运行时。Containerd作为Docker的一个组件,更加专注于容器运行时,性能更优,资源占用更少,且更为稳定。

那应该学哪个容器化技术?

  • Containerd:作为Docker的一个核心组件,Containerd被设计为一个轻量级的容器运行时,它支持Docker镜像格式,可以直接与Kubernetes集成。学习Containerd将帮助你更好地理解Kubernetes的底层工作原理,特别是在容器运行时方面。
  • Kubernetes(k8s):虽然k8s不再默认支持Docker作为容器运行时,但k8s本身的学习价值并未降低。k8s提供了强大的容器编排能力,包括服务发现、负载均衡、自动扩展、自动修复等功能,是现代云原生应用不可或缺的基础设施。
  • 其他容器技术:除了Docker和Containerd,还有其他容器技术如CRI-O(基于OCI的容器运行时)、Podman(一个无需守护进程的容器管理工具)等,这些技术也可以与Kubernetes集成,但Containerd因其与Docker的兼容性以及Kubernetes的官方推荐,通常是首选。

总结

  • Kubernetes不再默认支持Docker作为容器运行时,但Docker镜像仍然可以在Kubernetes中使用。
  • 建议学习Containerd以更好地理解Kubernetes的容器运行时机制。
  • 继续深入学习Kubernetes,掌握其强大的容器编排能力。
  • 同时,也可以关注其他与Kubernetes兼容的容器技术,以拓宽视野和选择范围。
 类似资料:
  • 关于「什么是 Docker」这个话题,互联网上有大量精彩的文章,我们首推微博用户「Gary的影响力」最近发表在「运维帮」上的这一篇「为什么容器技术将主宰世界」。Gary 从集装箱行业的兴盛入手,以史为鉴,言简意赅的介绍了 Docker 技术对软件开发的重要性。我们获得了作者的授权,全文转载如下。 为什么容器技术将主宰世界 2015-11-14 作者:Gary 原文链接 由于本文篇幅较长,为了帮助你

  • Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。 Docker 自开源后受到广泛

  • 我几天前听说了Docker的事,想过去看看。 但事实上,我不知道这个“容器”的用途是什么? 什么是容器? 它能取代一个专门用于开发的虚拟机吗? 简单地说,在公司中使用Docker的目的是什么?主要的优势?

  • 我需要在JAX-WS中通过客户端连接到外部服务器。客户端在Wildfly 8上运行。使用Java8连接是正常的。但我在Java7中连接到服务器时遇到了问题(我尝试了u45、67、79)。服务器端安全性的属性为https://www.ssllabs.com/ssltest/analyze.html?d=app.bundesnetzagentur.de 在部分“密码套件”中有四个密码。源代码不应支持J

  • 想改进这个问题吗 通过编辑这篇文章,更新问题,以便用事实和引文来回答。 我认为这样更好: 但是为什么没有选择一个明确的名字呢?