Docker、Containerd ctr 和 crictl 命令区别
- containerd
- 5天前
- 27热度
- 0评论
一般来说,在某个主机安装了 k8s 后,命令行会有 crictl 命令。而 ctr 是跟 k8s 无关的,你主机安装了 containerd 服务后就可以操作 ctr 命令。
- crictl 是遵循CRI接口规范的一个命令行工具,通常用它来检查和管理kubelet节点上的容器运行时和镜像。
- ctr 是 containerd 的一个客户端工具。
- ctr -v 输出的是 containerd 的版本,crictl -v 输出的是当前 k8s 的版本,从结果显而易见你可以认为 crictl 是用于 k8s 的。
使用crictl命令之前,需要先配置/etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
也可以通过命令进行设置:
crictl config runtime-endpoint unix:///run/containerd/containerd.sock
crictl config image-endpoint unix:///run/containerd/containerd.sock
命令区别:
命令 |
docker |
ctr(containerd) |
crictl(kubernetes) |
查看运行的容器 |
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 |
无(最小单元为pod) |
打标签 |
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 |
清空不用的容器 |
docker image prune |
无 |
crictl rmi --prune |
Containerd有namespaces的概念,对于上层编排系统的支持,ctr 客户端 主要区分了3个命名空间分别是k8s.io、moby和default,以上我们用crictl操作的均在k8s.io命名空间,使用ctr 看镜像列表就需要加上-n参数。crictl是只有一个k8s.io命名空间,但是没有-n参数。
# 注意-n不能放在命令最后面,下面几行查看的镜像是一样的 ctr -n=k8s.io image ls ctr -n k8s.io image ls # crictl 没有-n参数,操作都在`k8s.io`命名空间下。 crictl image ls crictl images # 使用ctr命令指定命名空间导入镜像 ctr -n=k8s.io image import dashboard.tar