Docker、ctr、crictl、nerdctl

1. Docker 命令总结

Docker 是一个完整的容器平台,命令最丰富、用户体验友好,适用于开发和CI/CD。

镜像操作

功能

命令

说明

拉取镜像

docker pull nginx:latest

推送镜像

docker push nginx:latest

查看镜像列表

docker imagesdocker image ls

删除镜像

docker rmi <image_id>docker image rm <image_id>

导出镜像

docker save -o nginx.tar nginx:latest

导入镜像

docker load -i nginx.tar

查看镜像详情

docker inspect nginx:latest

清理未使用镜像

docker image prune

容器操作

功能

命令

说明

运行容器

docker run -d --name my-nginx nginx:latest

-d 代表后台运行

查看容器

docker ps (运行中) / docker ps -a (所有)

停止容器

docker stop <container_id>

删除容器

docker rm <container_id>

删除前需先停止

查看容器详情

docker inspect <container_id>

查看容器日志

docker logs <container_id>

进入容器

docker exec -it <container_id> /bin/bash

查看容器进程

docker top <container_id>

构建与推送

功能

命令

说明

构建镜像

docker build -t app:v1 .

推送镜像

docker push myrepo/app:v1

登录仓库

docker login registry.example.com

网络与存储

功能

命令

说明

查看网络

docker network ls

创建网络

docker network create mynet

挂载卷运行

docker run -v /host/path:/container/path nginx

2. nerdctl 命令总结

nerdctl 旨在为 containerd 提供与 Docker 兼容的命令行体验,是生产环境中替代 Docker CLI 的最佳选择。

镜像操作

功能

命令

说明

拉取镜像

nerdctl pull nginx:latest

推送镜像

nerdctl push nginx:latest

查看镜像列表

nerdctl images

删除镜像

nerdctl rmi <image_id>

导出镜像

nerdctl save -o nginx.tar nginx:latest

导入镜像

nerdctl load -i nginx.tar

查看镜像详情

nerdctl image inspect nginx:latest

清理未使用镜像

nerdctl image prune

容器操作

功能

命令

说明

运行容器

nerdctl run -d --name my-nginx nginx:latest

查看容器

nerdctl ps / nerdctl ps -a

停止容器

nerdctl stop <container_id>

删除容器

nerdctl rm <container_id>

查看容器详情

nerdctl inspect <container_id>

查看容器日志

nerdctl logs <container_id>

进入容器

nerdctl exec -it <container_id> /bin/bash

关键优势:在无Docker的K8s节点上进入容器的首选

查看容器进程

nerdctl top <container_id>

构建与推送

功能

命令

说明

构建镜像

nerdctl build -t app:v1 .

需要 buildkit

推送镜像

nerdctl push myrepo/app:v1

登录仓库

nerdctl login registry.example.com

网络与命名空间

功能

命令

说明

查看网络

nerdctl network ls

创建网络

nerdctl network create mynet

挂载卷运行

nerdctl run -v /host/path:/container/path nginx

查看/切换命名空间

nerdctl namespace ls
nerdctl --namespace k8s.io ps

关键:管理K8s容器时必须指定 -n k8s.io

3. ctr 命令总结

ctr 是 containerd 的底层客户端,命令较为原始,适合进行底层调试和排障。

镜像操作

功能

命令

说明与注意事项

拉取镜像

ctr images pull docker.io/library/nginx:latest

通常需要完整地址

推送镜像

ctr images push docker.io/library/nginx:latest

通常需要完整地址

查看镜像列表

ctr images ls

删除镜像

ctr images rm docker.io/library/nginx:latest

导出镜像

ctr images export nginx.tar nginx:latest

导入镜像(到K8s空间)

ctr -n k8s.io images import nginx.tar

关键:必须用 -n k8s.io 导入K8s才能识别

查看镜像信息

ctr images info nginx:latest

清理镜像

ctr images prune

容器操作

功能

命令

说明

运行容器

ctr run -d docker.io/library/nginx:latest my-nginx

功能有限,不推荐用于复杂场景

查看容器

ctr containers ls (查看容器)
ctr tasks ls (查看运行中的任务)

停止容器(任务)

ctr tasks kill my-nginx

删除容器

ctr containers rm my-nginx

查看容器信息

ctr containers info my-nginx

查看容器进程

ctr tasks ps my-nginx

其他功能

功能

命令

说明

查看任务指标

ctr tasks metrics my-nginx

查看资源使用

查看快照

ctr snapshots ls

查看存储快照

命名空间管理

功能

命令

说明

查看命名空间

ctr namespaces ls

查看K8s容器/任务

ctr -n k8s.io containers ls
ctr -n k8s.io tasks ls

关键:不指定 -n k8s.io 就看不到K8s创建的容器

4. crictl 命令总结

crictl 是 Kubernetes CRI(容器运行时接口)的调试工具,专门用于在节点上检查和调试 Kubernetes 创建的 Pod 和容器。

镜像操作

功能

命令

说明

拉取镜像

crictl pull nginx:latest

查看镜像列表

crictl images

删除镜像

crictl rmi <image_id>

清理未使用镜像

crictl rmi --prune

查看镜像详情

crictl inspecti <image_id>

容器与Pod操作

功能

命令

说明

查看Pod沙盒

crictl pods

查看节点上的 Pod(沙盒)

查看所有容器

crictl ps -a

包括 pause 容器和应用容器

停止容器

crictl stop <container_id>

删除容器

crictl rm <container_id>

查看容器详情

crictl inspect <container_id>

获取容器详细配置和状态

查看容器日志

crictl logs <container_id>

关键优势:比 kubectl logs 更底层,排障常用

不支持的功能

不支持run, exec, build, push, login, 网络/卷管理
它只是一个调试工具,不是完整的运行时客户端。

5. Kubernetes 节点调试常用命令集

在 K8s 节点上,推荐搭配使用 crictlctr

目的

命令

说明

查看节点上所有 Pod

crictl pods

显示 sandbox 与 Pod 状态

查看所有容器

crictl ps -a

查看包括 pause 容器在内的所有容器

查看容器详细信息

crictl inspect <container_id>

获取容器运行参数

查看容器日志

crictl logs <container_id>

kubectl logs 更底层

查看 containerd task

ctr -n k8s.io tasks ls

containerd 运行时任务列表

杀掉异常容器

ctr -n k8s.io tasks kill <container_id>

强制终止运行任务

清理残留容器

crictl rm $(crictl ps -a -q)

一键清理僵尸容器

6. 工具定位与使用场景总结

工具

定位

典型使用场景

Docker

开发环境 / CI/CD

构建镜像、运行测试容器

ctr

运行时底层调试

containerd 运维排障

crictl

K8s 节点调试

查看 Pod 容器底层状态

nerdctl

containerd 轻量操作

无 Docker 的生产节点运行容器