CCE容器运行时选择
容器运行时(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 |