docker docker和container的关系

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

常用命令

image

image

文档参考

Docker && Container 对比 —— 筑梦之路

待完善。。。

posted @ 2022-11-16 14:58  liwenchao1995  阅读(691)  评论(0编辑  收藏  举报