天翼云(CTYun)的 Kubernetes 节点默认使用 containerd 作为容器运行时,没有 docker 命令。进入容器要使用 crictl(CRI 工具),这是 containerd 生态的标准方式。

1. 列出 Pods

crictl pods

输出示例:

POD ID              CREATED              STATE               NAME                          NAMESPACE           ATTEMPT
9c8e7d5f4a1b       About an hour ago    Running             mdm-nginx-6c56d77877-6gr6r    default             0
...

2. 找对应的 mdm-nginx 容器的具体 ID

crictl ps | grep mdm-nginx-6c56d77877-6gr6r

输出示例:

CONTAINER ID    IMAGE                              CREATED             STATE    NAME             POD ID
a1b2c3d4e5f6    harbor.example.com/mdm/nginx:v1.2  About an hour ago   Running  mdm-nginx        9c8e7d5f4a1b

3. 进入容器

crictl exec -it <CONTAINER_ID> sh

💡 小贴士:很多精简镜像(如 nginx、alpine)没有 bash,只有 sh。如果不确定镜像 shell,用 sh 兼容性最高;遇到 debian/ubuntu 基础镜像,可以改成 bash

补充:常用 crictl 命令速查

命令 用途
crictl pods 列出所有 Pod(类似 kubectl get pods,但站在节点视角)
crictl ps 列出所有容器(类似 docker ps)
crictl ps -a 包括已停止的容器(类似 docker ps -a)
crictl images 列出节点本地镜像(类似 docker images)
crictl logs <CONTAINER_ID> 看容器日志(类似 docker logs)
crictl exec -it <ID> sh 进入容器
crictl inspect <ID> 看容器详细信息(JSON)

crictl vs docker 速查对照

操作 docker crictl
列出容器 docker ps crictl ps
看日志 docker logs <ID> crictl logs <ID>
进容器 docker exec -it <ID> sh crictl exec -it <ID> sh
拉镜像 docker pull <image> ctr -n k8s.io images pull <image>
列镜像 docker images crictl images

常见问题

报错 原因 修复
command not found: crictl 节点没装 cri-tools yum install -y cri-tools(CentOS)/ apt install -y cri-tools(Ubuntu)
FATA[0000] runtime connect using endpoint crictl 默认找 unix:///var/run/dockershim.sock export CONTAINER_RUNTIME_ENDPOINT=unix:///run/containerd/containerd.sock
容器里没有 bash 镜像用 alpine/distroless 改用 sh,或装 bash 进镜像

相关阅读