目录
docker docker和container的关系
- docker 由 docker-client ,dockerd,containerd,docker-shim,runc 组成,所以 containerd 是 docker 的基础组件之一
- 从 k8s 的角度看,可以选择 containerd 或 docker 作为运行时组件:其中 containerd 调用链更短,组件更少,更稳定,占用节点资源更少。所以 k8s 后来的版本开始默认使用 containerd,另一方面,也是因为k8s集群需要花费额外费用调用docker的接口,因此最新的k8s集群版本抛弃了docker
- containerd 相比于 docker , 多了 namespace 概念,每个 image 和 container 都会在各自的 namespace 下可见
- docker 作为 k8s 容器运行时,调用关系为:kubelet --> dockershim (在 kubelet 进程中) --> dockerd --> containerd
containerd 作为 k8s 容器运行时,调用关系为:kubelet --> cri plugin(在 containerd 进程中) --> containerd
命令区分
ctr 是 containerd 的一个客户端工具。
crictl 是 CRI 兼容的容器运行时命令行接口,可以使用它来检查和调试 k8s 节点上的容器运行时和应用程序。
ctr -v 输出的是 containerd 的版本,crictl -v 输出的是当前 k8s 的版本,从结果显而易见你可以认为 crictl 是用于 k8s 的。
一 般来说某个主机安装了 k8s 后,命令行才会有 crictl 命令。而 ctr 是跟 k8s 无关的,主机安装了 containerd 服务后就可以操作 ctr 命令
# ctr -v
ctr github.com/containerd/containerd v1.4.11
# crictl -v
crictl version v1.21.0-k3s1
常用命令
文档参考
Docker && Container 对比 —— 筑梦之路
待完善。。。
标签:关系,container,ctr,--,containerd,crictl,docker,k8s From: https://www.cnblogs.com/liwenchao1995/p/16895941.html