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