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