容器运行时(Container Runtime)是 Kubernetes 重要的组件之一,负责管理镜像和容器的生命周期。本文通过对比两种运行时的使用场景、调用链,并通过对比 docker 和 containerd 两种容器引擎常用命令,帮助您根据需求场景选择合适的容器运行时。
containerd 作为一种常见的容器运行时,相比较于 docker,它的调用链更短,组件更少,更稳定,占用节点的资源更少。CCE 同时支持 containerd 和 docker 两种容器运行时,通常情况下建议使用 containerd,若存在以下情况时,请选择 docker 容器运行时:
- 如需使用 docker in docker。
- 如需在 CCE 节点上执行 docker build/push 等命令。
- 如需调用 docker API。
- 如需 docker compose 或 docker swarm。
两种运行时调用链对比
| 运行时 | 调用链 |
|---|---|
| docker | kubelet > dockershim > dockerd > containerd |
| containerd | kubelet > CRI plugin > containerd |
Docker 和 Containerd 两种容器引擎常用命令对比
镜像相关功能
| 功能 | Docker | Containerd |
|---|---|---|
| 查看镜像列表 | docker images | crictl images |
| 查看镜像详情 | docker inspect | crictl inspecti |
| 推送镜像 | docker push | 无 |
| 拉取镜像 | docker pull | crictl pull |
| 删除镜像 | docker rmi | crictl rmi |
容器相关功能
| 功能 | Docker | Containerd |
|---|---|---|
| 查看容器列表 | docker ps | crictl ps |
| 查看容器详情 | docker inspect | crictl inspect |
| 查看容器日志 | docker logs | crictl logs |
| 容器内执行命令 | docker exec | crictl exec |
| 挂载容器 | docker attach | crictl attach |
| 显示容器资源使用情况 | docker stats | crictl stats |
| 创建容器 | docker create | crictl create |
| 启动容器 | docker start | crictl start |
| 停止容器 | docker stop | crictl stop |
| 删除容器 | docker rm | crictl rm |
Pod 相关功能
| 功能 | Docker | Containerd |
|---|---|---|
| 查看 Pod 列表 | 无 | crictl pods |
| 查看 Pod 详情 | 无 | crictl inspectp |
| 启动 Pod | 无 | crictl runp |
| 停止 Pod | 无 | crictl stopp |






