1. ctr

ctr 是 containerd 的一个客户端工具。

$ ctr -v
ctr containerd.io 1.6.16

从输出看到,这是一个 containerd 管理工具,一般是安装完 containerd.io 之后就有的命令。

现在 Containerd 也有 namespaces 的概念,所以很多操作需要加上 -n。默认情况下运行在 default 名称空间下,但是不显示。

$ ctr help
$ ctr ns ls
NAME   LABELS
k8s.io

$ ctr image pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
$ ctr image ls
REF                                                                                                    TYPE                                                      DIGEST                                                                  SIZE      PLATFORMS                                                      LABELS
registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2                                          application/vnd.docker.distribution.manifest.list.v2+json sha256:927d98197ec1141a368550822d18fa1c60bdae27b78b0c004f705f548c07814f 292.5 KiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x -

$ ctr -n default image ls        // 和上面输出一样

2. crictl

crictl 是 CRI 兼容的容器运行时命令行接口,可以使用它来检查和调试 k8s 节点上的容器运行时和应用程序。一般来说,安装完 k8s 之后才会有该命令。

$ crictl -v
crictl version v1.26.0

从输出看到,这是一个 k8s 管理工具。默认拉取的镜像位于 k8s.io 命名空间下。

# crictl config runtime-endpoint unix:///var/run/cri-dockerd.sock
$ crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock
$ cat /etc/crictl.yaml
$ crictl ps

3. 命令比较

命令 docker ctr(containerd) crictl(kubernetes)
查看运行的容器 docker ps ctr task ls / ctr container ls crictl ps
查看镜像 docker images ctr image ls / ctr i ls crictl images
查看容器日志 docker logs crictl logs
查看容器信息 docker inspect ctr container info crictl inspect
查看容器资源 docker stats crictl stats
启动/关闭已有的容器 docker start/stop ctr task start/kill crictl start/stop
运行一个新的容器 docker run ctr run 无(最小单元为 Pod)
修改镜像标签 docker tag ctr image tag
创建一个新的容器 docker create ctr container create crictl create
导入镜像 docker load ctr image import
导出镜像 docker save ctr image export
删除容器 docker rm ctr container rm crictl rm
删除镜像 docker rmi ctr image rm crictl rmi
拉取镜像 docker pull ctr image pull crictl pull
推送镜像 docker push ctr image push
在容器内部执行命令 docker exec crictl exec

nerdctl :https://github.com/containerd/nerdctl
Buildah
Kaniko