containerd 客户端工具有 ctr 和 crictl 两个
建议使用ctl工具,方法见下面【containerd 客户端工具 nerdctl 的使用】
========================================================================
- 如果使用 crictl 命令的话需要执行
[root@vms103 ~]# crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock
[root@vms103 ~]#
镜像查看
查看命令如下
[root@vms103 ~]# ctr i list
REF TYPE DIGEST SIZE PLATFORMS LABELS
[root@vms103 ~]#
[root@vms103 ~]# crictl images
IMAGE TAG IMAGE ID SIZE
[root@vms103 ~]#
镜像下载
- 使用 crictl 下载镜像的命令为
crictl pull 镜像
,比如下载 nginx 镜像:
[root@vms103 ~]# crictl pull docker.io/nginx
Image is up to date for
sha256:f6d0b4767a6c466c178bf718f99bea0d3742b26679081e52dbf8e0c7c4c42d74
[root@vms103 ~]#
- (使用 ctr 下载镜像的命令是 ctr i pull 镜像名)
但是使用 ctr 命令进行查看的时候却是没有的,这是为何?
[root@vms103 ~]# ctr i list
REF TYPE DIGEST SIZE PLATFORMS LABELS
[root@vms103 ~]#
- 因为 containerd 和 docker 相比多了命名空间的概念。当使用 crictl 命令的时候,都是在 k8s.io
这个命名空间里的,而 ctr 默认是在 default 这个命名空间里。所以当 crictl 下载镜像之后,
会自动创建一个 k8s.io,而下载的镜像就是放在 k8s.io 里的。
[root@vms103 ~]# ctr ns list
NAME LABELS
k8s.io
[root@vms103 ~]#
- 因为 ctr 默认查看的是 default 命名空间,所以看不到下载的镜像。如果想查看其他命名空间
里的镜像需要加上-n 指定命名空间:
[root@vms103 ~]# ctr -n k8s.io i list -q
docker.io/library/nginx:latest
docker.io/library/nginx@sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434
fd40e2ca4aa
sha256:f6d0b4767a6c466c178bf718f99bea0d3742b26679081e52dbf8e0c7c4c42d74
[root@vms103 ~]#
- 如果 ctr 想切换到其他命名空间,只需定义变量 CONTAINERD_NAMESPACE,比如:
[root@vms103 ~]# export CONTAINERD_NAMESPACE=k8s.io
[root@vms103 ~]# ctr i list -q
docker.io/library/nginx:latest
docker.io/library/nginx@sha256:10b8cc432d56da8b61