Kubernetes弃用Docker的由来和始末

2023-11-16

2020年12月初,Kubernetes在发布v1.20的时候重磅宣称将逐渐弃用Docker,一石激起千层浪,瞬间引爆容器圈;但没想到已经过去两个月时间了,还有文章用UC体误导吃瓜群众,“还在学Docker?”、“Docker已死!”; 额… 累了,毁灭吧,赶紧的…

所以在此梳理下整件事情的来龙去脉,若有不正确的地方还请指正,非常感谢!


快速回顾

最初Docker是建立在Linux的LXC容器技术之上,但LXC最早也是由Google贡献给Linux的,所以一定程度上说没有Google就没有Docker。
在这里插入图片描述
Docker一问世就广受好评,发展迅速,于是在2015年左右,不满足只做容器引擎的Docker开始尝试提供容器编排能力,对单机场景推出了Docker Compose,对集群场景推出了Docker Swarm;也就在同年,Google推出了同样具备容器编排能力的Kubernetes,并在与Docker SwarmApache Mesos的三方大战中大获全胜。

于是在之后的一段时间里形成了“集群容器编排用Kubernetes,单机容器引擎用Docker”的潜规则。在这里插入图片描述
但Kubernetes对于这种合作机制并不满意,因为Kubernetes更贴近用户的上层容器编排能力不想局限于Docker这一种底层容器Runtime,市面上还其他的容器Runtime,比如rkt/frakti等,Kubernetes全都要…

所以Kubernetes于v1.5提出了CRI - Container Runtime Interface,这是一种自上而下的标准,旨在适配底层不同的容器Runtime;
在这里插入图片描述
在kubernetes和容器runtime之间加一层CRI标准进行解耦,kubernetes作为client只和CRI提供的service进行交互,这里CRI主要提供两种service:管理镜像的ImageService和管理pod与container的RuntimeService;

各容器Runtime厂商可以选择接入CRI标准,但Docker拒绝了,所以kubernetes不得不自己来实现和维护docker shim来适配Docker;
在这里插入图片描述
同时Docker也没闲着,联合一众厂商提出了OCI - Open Container Initiative,这是一种自下而上的标准,旨在规范化容器格式与Runtime,也向CNCF贡献了OCI的实现runC
在这里插入图片描述
同时Docker也向"主动"向CNCF贡献了docker deamon的精简版containerd
在这里插入图片描述
至此,Kubernetes准备要去除Docker的条件基本形成…

对于上面的整个链路来说,一直在维护dockershim的kubernetes认为是时候尝试去除docker了,首次尝试是推出了cir-containerd,这是一个符合CRI标准的containerd插件,真正的做到了去Docker化;
在这里插入图片描述
此外还有由红帽推出的更激进的CRI-O,docker去除的更彻底;
在这里插入图片描述
尽管有containerdCRI-O,但用户早已习惯使用docker,所以kubernetes并没有急于立刻停掉dockershim

就这样过了几年,随着containerd的正式毕业,CRI-O的稳步孵化,kubernetes终于决定要真正去除Docker,在发布v1.20的时候正式宣布将去除dockershim,建议用户做好准备选择使用containerd或者CRI-O


有何影响

  • 对于普通开发者来说毫无影响,可以继续使用Docker打包并在单机运行镜像;
  • 对于集群运维同学来说,在Kubernetes升级到v1.22之后需要准备好containerdCRI-O环境;但只要不升级也没有任何影响…

写在最后

Docker虽然没有像一些文章里宣传的那样消亡,但被Kubernetes一点点蚕食也是不争的事实,同时Podman的出现也在尝试将Docker推向幕后… 或许几年后Docker真的会退出历史舞台吧…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes弃用Docker的由来和始末 的相关文章

随机推荐

  • 【编码-校验码】奇偶校验码

    https zhuanlan zhihu com p 26509678 引自原文 1 定义 奇偶校验位 英语 Parity bit 或校验比特 check bit 是一个表示给定位数的二进制数中1的个数是奇数还是偶数的二进制数 奇偶校验位是
  • 炫酷的Android智能下拉刷新框架,值得一看

    1 Android智能下拉刷新框架 SmartRefreshLayout 支持所有的 View AbsListView RecyclerView WebView View 和多层嵌套的视图结构 支持自定义并且已经集成了很多炫酷的 Heade
  • BRDF详解

    光照模型主要分为三类 测量模型 经验模型和基于物理的分析模型 在计算机图形学中介绍的光照模型为经验模型中的Phong模型 也就是本人理解的 根据点距光源的位置 入射角度等信息计算的 反射强度 包括漫反射强度 镜面反射强度 但是Phong模型
  • 《effective c++》笔记

    序 1 object 在 object oriented技术中的真正意义是 物件 物体 而非 对象 目标 导读 1 术语 1 声明式 告诉编译器名称和类型 但略去细节 std size t numDigit int number std命名
  • 软工导论知识框架(六)面向对象分析

    前言 绘制各种类型的图是重点 对于面向对象建模中需要绘制的图总结在第五期中 软工导论知识框架 五 面向对象方法学 一 分析过程 1 获取需求 与用户交谈 向用户提问题 参观用户的工作流程 观察用户的操作 向用户群体发调查问卷 与同行 专家交
  • 【满分】【华为OD机试真题2023 JAVA&JS】查找重复代码

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 查找重复代码 时间限制 1s 空间限制 32MB 限定语言 不限 题目描述 小明负责维护项目下的代码 需要查找出重复代码 用以支撑后续的代码优化 请你帮助小明找出重复的代码 重复
  • 使用IntelliJ IDEA查看类的继承关系图形

    最近正好也没什么可忙的 就回过头来鼓捣过去的知识点 到Servlet部分时 以前学习的时候硬是把从上到下的继承关系和接口实现记得乱七八糟 这次利用了IDEA的diagram 结果一目了然 也是好用到炸裂 就此分享 1 查看图形形式的继承链
  • Golang基础 流程控制 条件判断

    条件判断 01 条件判断 if 02 分支选择 switch 03 异步处理 select 参考资料 条件语句一般指定一个或多个条件 并通过测试条件是否为 true 来决定是否执行指定语句 并在条件为 false 的情况在执行另外的语句 0
  • 你得学会并且学得会的Socket编程基础知识

    这一篇文章 我将图文并茂地介绍Socket编程的基础知识 我相信 如果你按照步骤做完实验 一定可以对Socket编程有更好地理解 本文源代码 可以通过这里下载 http files cnblogs com chenxizhang Socke
  • xLua游戏中的热更新(基于Unity2018)

    什么是热更新 热 就是刚出炉 简单来说就是当游戏某个功能出现bug 或者修改了某个功能 或者增加了某个功能的时候 我们不需要重新下载安装安装包 就可以更新游戏内容 热更新的好处 不用浪费流量重新下载 不用通过商店审核更加快速 不用重新安装玩
  • STM32+M5311对接 OneNET 项目记录

    以前做过的一个演示项目 一款判断人体进出的语言播报方案 通过LwM2M 协议连接 OneNET 硬件平台 M5311 STM32F103 云平台 中国移动 OneNET 语音芯片 WT 唯创知音 WT588D 传感器探头 SHARP 夏普
  • java中String类型转Map类型

    import com alibaba fastjson String str HashMap hashMap JSON parseObject str HashMap class
  • 生活是一种习惯

    生活是一种习惯 昨天看到一天文章 贫穷的理由 让我想到很多 我从家乡出来 来到北京 根据自己的亲身体会 人要养成一个好的习惯 善于学习 不安于现状的习惯 人活着 要想活出个样了 非大众化的人生 就要不安于现状 不要让自己养成满足的习惯 要不
  • [1048]python base64与hex相互转换

    base64转hex coding utf 8 Python 2 import base64 text woidjw b64 hex base64 b64decode text encode hex print b64 hex b64 he
  • C语言学习

    目录 调试 基本概念 bug 调试 debug 调试步骤 Debug和Release VS是集成开发环境 IDE 调试的快捷键 调试窗口 监视 减少程序的错误 assert 表达式 const 变量 调试 基本概念 bug 虫子 bug引申
  • 梦之光芒ctf小游戏闯关过程

    梦之光芒ctf游戏闯关 简介 玩这个游戏 您需要有JS 编码解码 XSS SQL注入 图片隐写 逆向分析等基本常识 游戏地址 http monyer com game game1 进入第1关 入口提示 请点击链接进入第1关 连接在左边 连接
  • max_binlog_size

    max binlog size 默认就是一个G最大值 但是有有什么会发现超过了一个G 原因就是 If a write to the binary log causes the current log file size to exceed
  • java application.yml 配置对象数组

    java application yml 配置对象数组 application yml 配置对象数组 常规对象中获取属性 场景 application yml 配置对象数组 定义配置文件结构 用于定义配置文件的数据结构 打印服务中用到的打印
  • Thinkpad在linux(ubuntu)下修改电池充电阈值,成功解决Thinkpad在Linux下的电池充电问题

    look this for more info http www thinkwiki org wiki Tp smapi 安装tp smapi aptitude install tp smapi dkms modprobe tp smapi
  • Kubernetes弃用Docker的由来和始末

    2020年12月初 Kubernetes在发布v1 20的时候重磅宣称将逐渐弃用Docker 一石激起千层浪 瞬间引爆容器圈 但没想到已经过去两个月时间了 还有文章用UC体误导吃瓜群众 还在学Docker Docker已死 额 累了 毁灭吧