ctr(docker)和crictl(k8s)的联系和区别

一、docker 和 containerd

1、docker 由 docker-client ,dockerd,containerd,docker-shim,runc等组成,所以containerd是docker的基础组件之一
注意不同版本的docker,名称也不一样(包括调用链条是不一样的)
2、从k8s的角度看,可以选择 containerd(目前社区开发是比较活跃的) 或 docker作为运行时组件:其中 containerd 调用链更短,组件更少,更稳定,占用节点资源更少。
所以k8s后来的版本开始默认使用 containerd 。
3、containerd 相比于docker , 多了 namespace 概念,每个 image 和 container 都会在各自的namespace下可见。 4、docker 作为 k8s 容器运行时,调用关系为: kubelet --> dockershim (在 kubelet 进程中) --> dockerd --> containerd containerd 作为 k8s 容器运行时,调用关系为: kubelet --> cri plugin(在 containerd 进程中) --> containerd

二、命令区分
 ctr工具(二进制程序) 是 containerd 的一个客户端工具。

复制代码
[root@ht6 ~]# ctr -v
ctr containerd.io 1.5.11

[root@ht6 ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.14
 API version:       1.41
....
ctr -v 输出的是 containerd 的版本
复制代码


kubelet通过cri和containerd进行交互。crictl也可以通过cri规范和containerd交互
crictl 是 CRI(规范) 兼容的容器运行时命令行接口,可以使用它来检查和调试 k8s node节点上的容器运行时和应用程序。

安装 CRI 客户端 crictl

复制代码
下载地址: https://github.com/kubernetes-sigs/cri-tools/releases/
查看: https://github.com/containerd/cri/blob/master/docs/crictl.md
[root@ht6 ~]#wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.20.0/crictl-v1.20.0-linux-amd64.tar.gz
[root@ht6 ~]#tar zxvf crictl-v1.20.0-linux-amd64.tar.gz -C /usr/local/bin
[root@ht6 ~]#vi /etc/crictl.yaml 
  runtime-endpoint: unix:///run/containerd/containerd.sock
  image-endpoint: unix:///run/containerd/containerd.sock
  timeout: 10
  debug: false
//使用
[root@ht6 ~]#crictl -v [root@ht6 ~]#crictl pull nginx:alpine [root@ht6 ~]#crictl rmi nginx:alpine [root@ht6 ~]#crictl images

注意几点:
1.crictl需要单独安装,它和k8s没有直接关系
2.ctr命令在docker 20.10-ce版本中有
复制代码

 

三、比较下区别
 

命令
docker
ctr(containerd)
crictl(k8s)              
命令
docker
ctr(containerd)
crictl(k8s)
查看运行的容器
docker ps
ctr task ls/ctr container ls
crictl ps
查看镜像 docker images ctr image ls crictl images
查看容器日志 docker logs crictl logs
查看容器数据信息 docker inspect ctr container info crictl inspect
查看容器资源 docker stats crictl stats
启动/关闭已有的容器 docker start/stop ctr task start/kill crictl start/stop
运行一个新的容器 docker run ctr run
修改镜像标签 docker tag ctr image tag
创建一个新的容器 docker create ctr container create crictl create
导入镜像 docker load ctr image import
导出镜像 docker save ctr image export
删除容器 docker rm ctr container rm crictl rm
删除镜像 docker rmi ctr image rm crictl rmi
拉取镜像
docker pull
ctr image pull
ctictl pull
推送镜像
docker push
ctr image push
在容器内部执行命令
docker exec
crictl exec


  

posted @   jinzi  阅读(3105)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示