容器运行时说明
容器运行时介绍
容器运行时是Kubernetes最重要的组件之一,负责管理镜像和容器的生命周期。Kubelet通过Container Runtime Interface (CRI) 与容器运行时交互,以管理镜像和容器。
CCE支持用户选择Containerd和Docker容器运行时,其中Containerd调用链更短,组件更少,更稳定,占用节点资源更少。
Kubernetes社区已在v1.24版本移除dockershim,默认不再支持Docker容器运行时。为保持与社区技术路线同步,并提升集群运行的稳定性与资源效率,CCE对容器运行时的支持策略作出如下调整:
- 新建CCE集群:Kubernetes v1.34及以上版本,不再支持选择Docker作为容器运行时。
- 现有CCE集群:升级至Kubernetes v1.34及以上版本后Docker可正常运行,但新建节点或节点池推荐使用Containerd;升级至v1.35前必须完成Docker到Containerd的切换,v1.35及以上版本不再支持Docker作为容器运行时。
强烈建议您在新建节点时选择更加轻量、安全的Containerd容器运行时,同时将存量节点的容器运行时逐步迁移至Containerd,详情请参见将节点容器运行时从Docker迁移到Containerd。
对比 | Containerd | Docker |
|---|---|---|
调用链 | kubelet --> CRI plugin(在containerd进程中) --> containerd | |
命令 | crictl/ctr | docker |
Kubernetes CRI支持 | 原生支持 | 需通过dockershim或cri-dockerd提供CRI支持 |
Pod 启动延迟 | 低 | 高 |
kubelet CPU/内存占用 | 低 | 高 |
运行时CPU/内存占用 | 低 | 高 |
节点操作系统与容器运行时对应关系

v1.23及以上的VPC网络集群都支持Containerd,容器隧道网络集群从v1.23.2-r0开始支持Containerd。
操作系统 | 内核版本 | 上层容器运行时 | 下层容器运行时 | 容器存储Rootfs |
|---|---|---|---|---|
CentOS 7.6 | 3.x | Docker 1.23起支持Containerd | runC | 1.19.16以下版本集群使用Device Mapper 1.19.16及以上版本集群使用OverlayFS |
EulerOS 2.3 | 3.x | Docker | runC | Device Mapper |
EulerOS 2.5 | 3.x | Docker | runC | Device Mapper |
EulerOS 2.9 | 4.x | Docker 1.23起支持Containerd | runC | OverlayFS |
Ubuntu 18.04 | 4.x | Docker 1.23起支持Containerd | runC | OverlayFS |
Ubuntu 22.04 | 5.x | Docker 1.23起支持Containerd | runC | OverlayFS |
Huawei Cloud EulerOS 1.1 | 3.x | Docker Containerd | runC | OverlayFS |
Huawei Cloud EulerOS 2.0 | 5.x | Docker Containerd | runC | OverlayFS |
节点类型 | 操作系统 | 内核版本 | 上层容器运行时 | 下层容器运行时 | 容器存储Rootfs |
|---|---|---|---|---|---|
弹性云服务器-虚拟机 | CentOS 7.6 | 3.x | Docker Containerd | runC | OverlayFS |
Ubuntu 18.04 | 4.x | ||||
Ubuntu 22.04 | 5.x | ||||
EulerOS 2.9 | 4.x | ||||
Huawei Cloud EulerOS 1.1 | 3.x | ||||
Huawei Cloud EulerOS 2.0 | 5.x | ||||
弹性云服务器-物理机 | EulerOS 2.10 | 4.x | Containerd | Kata runC | Device Mapper |
操作系统 | 内核版本 | 上层容器运行时 | 下层容器运行时 | 容器存储Rootfs |
|---|---|---|---|---|
Huawei Cloud EulerOS 2.0 | 5.x | Docker Containerd | runC | OverlayFS |
EulerOS 2.9 | 4.x | Docker Containerd | runC | OverlayFS |
EulerOS 2.8 | 4.x | Docker | runC | OverlayFS |
Containerd和Docker组件常用命令对比
Containerd不支持dockerAPI和dockerCLI,但是可以通过cri-tool命令实现类似的功能。
操作 | Docker命令 | Containerd命令 | |
|---|---|---|---|
docker | crictl | ctr | |
列出本地镜像列表 | docker images | crictl images | ctr -n k8s.io i ls |
拉取镜像 | docker pull | crictl pull | ctr -n k8s.io i pull |
上传镜像 | docker push | 无 | ctr -n k8s.io i push |
删除本地镜像 | docker rmi | crictl rmi | ctr -n k8s.io i rm |
检查镜像 | docker inspect | crictl inspect | 无 |
操作 | Docker命令 | Containerd命令 | |
|---|---|---|---|
docker | crictl | ctr | |
列出容器列表 | docker ps | crictl ps | ctr -n k8s.io c ls |
创建容器 | docker create | crictl create | ctr -n k8s.io c create |
启动容器 | docker start | crictl start | ctr -n k8s.io run |
停止容器 | docker stop | crictl stop | 无 |
删除容器 | docker rm | crictl rm | ctr -n k8s.io c del |
连接容器 | docker attach | crictl attach | 无 |
进入容器 | docker exec | crictl exec | 无 |
查看容器详情 | docker inspect | crictl inspect | ctr -n k8s.io c info |
查看容器日志 | docker logs | crictl logs | 无 |
查看容器的资源使用情况 | docker stats | crictl stats | 无 |
更新容器资源限制 | docker update | crictl update | 无 |
操作 | Docker命令 | Containerd命令 | |
|---|---|---|---|
docker | crictl | ctr | |
列出Pod列表 | 无 | crictl pods | 无 |
查看Pod详情 | 无 | crictl inspectp | 无 |
启动Pod | 无 | crictl start | 无 |
运行Pod | 无 | crictl runp | 无 |
停止Pod | 无 | crictl stopp | 无 |
删除Pod | 无 | crictl rmp | 无 |

Containerd创建并启动的容器会被kubelet立即删除,不支持暂停、恢复、重启、重命名、等待容器,Containerd不具备docker构建、导入、导出、比较、推送、查找、打标签镜像的能力,Containerd不支持复制文件,可通过修改containerd的配置文件实现登录镜像仓库。
调用链区别
- Docker(Kubernetes 1.23及以下版本):
kubelet --> docker shim (在kubelet 进程中) --> docker --> containerd
- Docker(Kubernetes 1.24及以上版本社区方案):
kubelet --> cri-dockerd (kubelet使用cri接口对接cri-dockerd) --> docker --> containerd
- Containerd:
kubelet --> cri plugin(在containerd进程中) --> containerd
其中Docker虽增加了swarm cluster、docker build、docker API等功能,但也会引入一些bug,并且与Containerd相比,多了一层调用,因此Containerd被认为更加节省资源且更安全。
容器运行时版本说明

表8中仅列出最新集群版本中各操作系统对应的容器运行时版本。历史集群版本请登录节点通过以下命令查询容器运行时版本:
- docker版本号检查命令:
# Huawei Cloud EulerOS、EulerOS、CentOS系统 rpm -q docker-engine # Ubuntu系统 dpkg -s docker-ce
- containerd版本号检查命令:
# Huawei Cloud EulerOS、EulerOS、CentOS系统 rpm -q containerd # Ubuntu系统 dpkg -s containerd
集群版本 | 架构 | 操作系统 | 最新Docker版本 | 最新containerd版本 |
|---|---|---|---|---|
v1.34 | x86 | Huawei Cloud EulerOS 2.0 | 新建Kubernetes 1.34集群不支持Docker,详情请参见华为云CCE集群容器运行时Docker支持策略变化通知 | containerd-1.7.29-25.11.121763183.git9859417d.x86_64 |
EulerOS 2.9 | ||||
Huawei Cloud EulerOS 1.1 | ||||
CentOS 7.6 | ||||
Ubuntu 22.04 | 1.7.29-25.11.121763188.git9859417d | |||
arm | Huawei Cloud EulerOS 2.0 | containerd-1.7.29-25.11.121763183.git9859417d.aarch64 | ||
EulerOS 2.9 | ||||
v1.28-v1.33 | x86 | Huawei Cloud EulerOS 2.0 | docker-engine-18.09.0-311.r62.48.46.hce2.x86_64 | containerd-1.7.29-25.11.121763183.git9859417d.x86_64 |
EulerOS 2.9 | docker-engine-18.09.0.129-1.h94.43.29.eulerosv2r9.x86_64 | |||
Huawei Cloud EulerOS 1.1 | docker-engine-18.09.0.101-1.h70.28.24.eulerosv2r7.x86_64 | |||
CentOS 7.6 | docker-engine-18.09.0.101-1.h70.28.24.eulerosv2r7.x86_64 | |||
Ubuntu 22.04 | 27.5.1-25.11.121586247.git4c9b3b011a | 1.7.29-25.11.121763188.git9859417d | ||
arm | Huawei Cloud EulerOS 2.0 | docker-engine-18.09.0-311.r62.48.46.hce2.aarch64 | containerd-1.7.29-25.11.121763183.git9859417d.aarch64 | |
EulerOS 2.9 | docker-engine-18.09.0.129-1.h94.43.29.eulerosv2r9.aarch64 | |||
v1.27 | x86 | Huawei Cloud EulerOS 2.0 | docker-engine-18.09.0-311.r50.46.43.hce2.x86_64 | containerd-1.6.14-25.08.114880342.gita270719c.x86_64 |
EulerOS 2.9 | docker-engine-18.09.0.129-1.h91.43.27.eulerosv2r9.x86_64 | |||
Huawei Cloud EulerOS 1.1 | docker-engine-18.09.0.101-1.h70.28.24.eulerosv2r7.x86_64 | |||
CentOS 7.6 | docker-engine-18.09.0.101-1.h70.28.24.eulerosv2r7.x86_64 | |||
Ubuntu 22.04 | 27.5.1-25.05.108320057.git4c9b3b011a | 1.6.14-25.05.109434323.gite7077850 | ||
arm | Huawei Cloud EulerOS 2.0 | docker-engine-18.09.0-311.r50.46.43.hce2.aarch64 | containerd-1.6.14-25.08.114880342.gita270719c.aarch64 | |
EulerOS 2.9 | docker-engine-18.09.0.129-1.h91.43.27.eulerosv2r9.aarch64 | |||
v1.25 | x86 | Huawei Cloud EulerOS 2.0 | docker-engine-18.09.0-311.r50.46.43.hce2.x86_64 | containerd-1.6.14-25.08.114880342.gita270719c.x86_64 |
EulerOS 2.9 | docker-engine-18.09.0.129-1.h91.43.27.eulerosv2r9.x86_64 | |||
Huawei Cloud EulerOS 1.1 | docker-engine-18.09.0.101-1.h70.28.24.eulerosv2r7.x86_64 | |||
CentOS 7.6 | docker-engine-18.09.0.101-1.h70.28.24.eulerosv2r7.x86_64 | |||
Ubuntu 22.04 | 27.5.1-25.05.108320057.git4c9b3b011a | 1.6.14-25.05.109434323.gite7077850 | ||
Ubuntu 18.04 | 5:18.09.9~3-0~ubuntu-bionic | |||
arm | Huawei Cloud EulerOS 2.0 | docker-engine-18.09.0-311.r50.46.43.hce2.aarch64 | containerd-1.6.14-25.08.114880342.gita270719c.aarch64 | |
EulerOS 2.9 | docker-engine-18.09.0.129-1.h91.43.27.eulerosv2r9.aarch64 | |||
EulerOS 2.8 | docker-engine-18.09.0.101-1.h69.28.24.eulerosv2r8.aarch64 |

