crictl和ctr与docker的命令的对比
containerd 相比于docker , 多了namespace概念, 每个image和container 都会在各自的namespace下可见, 目前k8s会使用k8s.io 作为命名空间
crictl 使用命名空间 k8s.io
crictl image list = ctr -n=k8s.io image list
更换Containerd后,以往我们常用的docker命令也不再使用,取而代之的分别是crictl和ctr两个命令客户端。
crictl是遵循CRI接口规范的一个命令行工具,通常用它来检查和管理kubelet节点上的容器运行时和镜像
ctr是containerd的一个客户端工具,
接下来就是crictl的的常见命令,其中能完全替代docker命令的参照下列表格
操作 | crictl | docker |
---|---|---|
查看运行容器 | crictl ps | docker ps |
查看镜像 | crictl images | docker images |
查看容器日志 | crictl logs | docker logs |
登陆容器控制台 | crictl exec | docker exec |
pull镜像 | crictl pull | docker pull |
容器启动/停止 | crictl start/stop | docker start/stop |
容器资源情况 | crictl stats | docker stats |
可以看到crictl对容器生命周期的管理基本已经覆盖,不过在crictl我们不能完成操作也比较多,比如对镜像的管理就不属于它的管理范围。这部分还得依靠ctr来实现,操作方式同样可以参照下表
操作 | ctr | docker |
---|---|---|
查看镜像 | ctr images ls | docker images |
镜像导入/导出 | ctr images import/exporter xxx.tar.gz xxx | docker load/save xxx.tar.gz xxx |
镜像拉取/推送 | ctr images pull/push | docker pull/push |
镜像tag | ctr images tag | docker tag |
这里需注意的是,由于Containerd也有namespaces的概念,对于上层编排系统的支持,主要区分了3个命名空间分别是k8s.io、moby和default,以上我们用crictl操作的均在k8s.io命名空间完成如查看镜像列表就需要加上-n参数