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
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)