加餐|Kubernetes“弃用Docker”是怎么回事?
什么是 CRI
- 深入了解
- 翻译
- 解释
- 总结
Kubernetes“弃用Docker”并不意味着不再支持Docker,而是放弃了dockershim这个小组件。文章介绍了Kubernetes为何做出这一举动,解释了CRI的作用,并详细介绍了containerd作为CNCF的托管项目以及其与Kubernetes集成的过程。强调了Kubernetes的这一举动并不会对Docker产生太大影响,因为它们早已将下层改为开源的containerd。文章指出,Docker仍能以其他形式与Kubernetes共存,因为容器镜像格式已被标准化,Docker镜像仍可在Kubernetes中正常使用。此外,Docker还包括了许多服务,如镜像构建、分发、测试等,便利性使其难以被替代。尽管在容器编排战争中落败,Docker仍具有强韧的生命力,拥有众多忠实用户和庞大的应用镜像。最后,文章提出了一个思考题,引发读者思考Docker重构自身、分离出containerd是否算是一种“自掘坟墓”的行为。
《Kubernetes 入门实战课》,新⼈⾸单¥59
全部留言(28)
- 最新
- 精选
- 星垂平野阔docker分离containerd是一个很聪明的举动!与其将来被人分离或者抛弃不用,不如我主动革新,把Kubernates绑在我的战车上,这样cri的第一选择仍然是docker的自己人。 一时的退让是为了更好的将来。
作者回复: great!
2022-07-13230 - xmr1.主要还是docker公司话语权逐渐式微,你没有话语权说你不行就不行,docker不得不换一种方式(containerd)陪在你身边。 2.容器技术本身门槛就不高,形成不了技术壁垒,没有containerd还会有containere、containerf之类的代替者。
作者回复: great
2022-07-1311 - psoracle老师请教一个问题,很是疑惑。 问题是这样的,runc是一个按OCI规范运行容器的cli工具,如运行时containerd默认使用runc。 我看podman也是通过conmon调用runc运行容器,请问下podman运行容器使用的容器运行时是什么?像docker现在就是通过containerd来调用runc,所以containerd就是docker容器的运行时,从这个角度来看conmon是不是podman容器的运行时?
作者回复: runc是OCI规范中的容器底层部分,也就是原来docker的libcontainer,它调用namespace、cgroup等系统接口创建容器。 podman不太了解。运行时这个概念比较模糊,从Kubernetes角度来看containerd就是运行时,再往下runc有是运行时。 我觉得概念上不用太纠结,把精力用在更有价值的地方。
2022-07-1425 - 奕containerd 实现了 CRI 规范,来管理镜像和运行容器,默认和 k8s 绑定,那 k8s 还可以自由替换运行时吗? 做到 可插拔
作者回复: Kubernetes现在没有默认绑定在containerd上,cri接口通用,换哪个都可以。
2022-07-134 - psoracle容器运行时只是对Linux的namespace, cgroup, rootfs进行了产品化打包的一种技术,原则上来讲,如果Docker不把运行时containerd分离标准化CRI出来,Kubernetes其实也可以造出新轮子,毕竟现在的容器运行时也有很多,像cri-o, kata, mcr等,当然不知道会不会有啥版权侵犯到moby的。
作者回复: great
2022-07-134 - peter请教老师两个问题: Q1:有人提出了这个观点:“数据库不适合用docker,不管是mysql还是ES”,这个观点对吗? Q2:关于容器ID和imageID,我的理解是:容器ID是随机,在同一台宿主机上每次创建的ID都不同,而且同一个镜像在不同机器上创建的ID也不同。但image ID是唯一的、固定的,对于同一个版本,第N次下载和第M次下载的image ID是相同的,同一个image,下载到不同的机器上,image ID也是相同的。 我的理解对吗?
作者回复: 1.这个不能说全对也全错,我不是数据库专家,但这些产品早都有docker镜像了。 2.镜像是只读的,所以image id必然不可变。
2022-07-1323 - Demon.Lee看完罗老师这篇,再推荐一下隔壁周老师的( https://time.geekbang.org/column/article/351014 )一篇。在两位大佬的加持下,Kubernetes 与 Docker 相爱想杀的故事,想不懂都难 😂
作者回复: nice!
2022-11-08归属地:北京2 - 戒贪嗔痴为啥突然冒出个containerd让我一时不知所措,它的作用是什么,是作为守护进程存在吗?既然分离出的containerd没有兼容的接口,Google完全可以不用的,可能是不想重复造轮子吧。我就感觉怎么冒出个containerd就挺突然的。
作者回复: containerd就是原来的docker daemon,是用来管理调度容器的,不是凭空出现。 它是Kubernetes的必备组件container-runtime,不过也可以替换成CRI-O,因为都符合cri。
2022-07-1332 - lesserror课外小贴士中的“正式毕业”是什么意思呢?
作者回复: 这个应该是cncf基金会的术语,大概意思表示得到了业界的普遍承认,可以用于生产环境,具体的可以再查一下。
2022-07-1322 - aoe放心了
作者回复: good
2022-07-132