0
点赞
收藏
分享

微信扫一扫

docker与contained区别

一.为什么弃用docker,而采用containerd?

k8s在v1.20版本完全弃用docker,v1.24版本完全删除docker


相同点:都是符合OCI标准的高级别运行时


不同点:

1.docker作为运行时调用链长

使用docker时的调用链

         k8s调用流程:kubelet(客户端) ->docker shim -> dockerd -> containerd -> containerd-shim -> runc

使用contained时的调用链

          containerd自己集成了CRI shim,提供了一个CRI插件来实现shim的功能,这样kubelet可以越过dockerd直接访问containerd

         k8s调用流程:kubelet(客户端) ->CRI shim(被contained内置) -> containerd -> containerd-shim -> runc  


2.为了解耦

docker项目太大且在不停迭代,早期版本Kubernetes 是直接内置了 dockershim在kubelet,docker升级,k8s也需要相关的docker组件进行升级,所以k8s需要对此解耦,直接用符合OCI 规范的运行时

二.命令比较

docker与contained区别_docker

docker与contained区别_客户端_02

三.contained组件介绍

https://github.com/containerd

docker与contained区别_docker_03

组件部分:

grpc负责响应外部的api调用

Metrics负责数据的采集,结合advisor,用于监控

Storage 管理镜像文件的存储

Metadata 管理镜像和容器的元数据

Runtime 由 Task 触发的运行时

举报

相关推荐

0 条评论