如果你对 Docker 命令比较熟悉, 可以考虑使用 nerdctl 来管理 containerd,和 docker 命令类似:https://github.com/containerd/nerdctl

命令对比

命令 docker crictl(推荐) ctr
查看容器列表 docker ps crictl ps ctr -n k8s.io c ls
查看容器详情 docker inspect crictl inspect ctr -n k8s.io c info
查看容器日志 docker logs crictl logs
容器内执行命令 docker exec crictl exec
挂载容器 docker attach crictl attach
容器资源使用 docker stats crictl stats
创建容器 docker create crictl create ctr -n k8s.io c create
启动容器 docker start crictl start ctr -n k8s.io run
停止容器 docker stop crictl stop
删除容器 docker rm crictl rm ctr -n k8s.io c del
查看镜像列表 docker images crictl images ctr -n k8s.io i ls
查看镜像详情 docker inspect crictl inspecti
拉取镜像 docker pull crictl pull ctr -n k8s.io i pull
推送镜像 docker push ctr -n k8s.io i push
删除镜像 docker rmi crictl rmi ctr -n k8s.io i rm
查看 Pod 列表 crictl pods
查看 Pod 详情 crictl inspectp
启动 Pod crictl runp
停止 Pod crictl stopp

导入导出镜像

containerd 有 namespace 的概念,所以需要指定

1
2
3
4
5
# 导出镜像
ctr -n k8s.io image export k8s.gcr.io/coredns/coredns:v1.8.0 coredns_v1.8.0.tar

# 导入镜像
ctr -n=k8s.io image import coredns_v1.8.0.tar

登录仓库

您可以使用 ctr login 命令登录仓库。例如,如果您要登录 registry.cn-hangzhou.aliyuncs.com,则可以使用以下命令:

1
ctr login --username=<username> registry.cn-hangzhou.aliyuncs.com

请注意,是您的用户名.

打 tag

1
ctr image tag <image-name> <old-tag> <new-tag>

请注意,是镜像名称,是旧标记,是新标记

推送镜像

1
ctr image push <image-name>:<new-tag>