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 docker load/save
鏡像拉取/推送 ctr images pull/push docker pull/push
鏡像tag ctr images tag docker tag
這里需注意的是,由於Containerd也有namespaces的概念,對於上層編排系統的支持,主要區分了3個命名空間分別是k8s.io、moby和default,以上我們用crictl操作的均在k8s.io命名空間完成如查看鏡像列表就需要加上-n參數