更换Containerd后crictl和ctr命令操作
更换Containerd后,以往我们常用的docker命令也不再使用,取而代之的分别是crictl和ctr两个命令客户端。crictl是遵循CRI接口规范的一个命令行工具,通常用它来检查和管理kubelet节点上的容器运行时和镜像,ctr是containerd的一个客户端工具。
containerd 相比于docker , 多了namespace概念, 每个image和container 都会在各自的namespace下可见, 目前k8s会使用k8s.io 作为命名空间,crictl 使用命名空间 k8s.io 。crictl image list 等价于 ctr -n=k8s.io image list 。
Crictl / Containerd / Docker
| Functions | Crictl CLI | Containerd CLI | Docker CLI | 
|---|---|---|---|
| Image List | crictl images | ctr image ls | docker images | 
| Image Export | ctr image export app.tar weiyigeek.top/app:1.2.0 | docker save -o app.tar app:1.2.0 | |
| Image Import | ctr image import app.tar | docker load -i app.tar | |
| Image Pull | crictl pull redis:latest | ctr -n k8s.io images pull docker.io/library/redis:latest | docker pull redis:latest | 
| Image Push | crictl push redis:latest | ctr -n k8s.io images push docker.io/library/redis:latest | docker push redis:latest | 
| Image Tag Update | ctr -n k8s.io images tag docker.io/library/redis:latest weiyigeek.top/redis:latest | docker tag redis:latest weiyigeek.top/redis:latest | |
| Image Delete | crictl rmi redis:latest | ctr -n k8s.io images rm docker.io/library/redis:latest | docker rmi redis:latest | 
| Container Create | ctr -n k8s.io container create docker.io/library/redis:latest redis | docker create –name redis redis:latest | |
| Container Create Run | ctr -n k8s.io run -d –env name=WeiyiGeek weiyigeek.top/app:1.2.0 app | docker run -d –name app weiyigeek.top/app:1.2.0 | |
| Container List | crictl ps | ctr -n k8s.io container list | docker ps | 
| Container Start | crictl start | ctr -n k8s.io task start app | docker start app | 
| Container Pause | ctr -n k8s.io task pause app | docker pause app | |
| Container Stop | crictl stop | ctr -n k8s.io task kill app | docker stop app | 
| Container Delete | crictl rm | ctr -n k8s.io container rm [-f] app | docker rm [-f] app | 
| Container Detail Inspect | crictl inspect app | ctr -n k8s.io c info app | docker inspect app | 
| Container Attach | crictl attach | ctr -n k8s.io task attach app | docker attach app | 
| Run cmd inside Container | crictl exec -it app sh | ctr -n k8s.io task exec -t exec-id pid app sh | docker exec -it app sh | 
| Container Status | crictl stats | ctr -n k8s.io task metric app | docker top app | 
| Container Log | crictl logs | ctr -n k8s.io event | docker logs –tail 50 app | 
| Copy files from Container | 1 挂载本地磁盘/tmp/mymount到app容器:ctr -n k8s.io snapshot mounts /tmp/mymount app 2 从本地/tmp/mymount目录复制文件:cp /tmp/mymount/data ~/data 3 卸载/tmp/mymount目录:umount /tmp/mymount | docker cp | 
镜像导出导入
从docker更换为crictl后,由于crictl 没有提供 save 和 load 命令,如何存储和导入镜像呢?
1# ctr -n k8s.io image export busybox.tar.gz docker.io/library/busybox:latest
2# ctr -n k8s.io image import busybox.tar.gz
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
 - Link: https://blog.361way.com/containerd-crictl-ctr/8999.html
 - License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.