如何选择Containerd和Docker
如何选择运行时组件?
容器运行时(Container Runtime)是Kubernetes(k8s)最重要的组件之一,负责管理镜像和容器的生命周期。Kubelet通过Container Runtime Interface (CRI) 与容器运行时交互,以管理镜像和容器。
CCE支持用户选择containerd和docker作为运行时组件:
- Containerd调用链更短,组件更少,更稳定,占用节点资源更少。 建议选择containerd。
- 当您遇到以下情况时,请选择docker作为运行时组件:
- 如需使用docker in docker。
- 如需在CCE节点使用docker build/push/save/load等命令。
- 如需调用docker API。
- 如需docker compose或docker swarm。
Containerd和Docker组件常用命令
Containerd不支持dockerAPI和dockerCLI,但是可以通过cri-tool命令实现类似的功能。
序号 |
Docker命令 |
Containerd命令 |
备注 |
---|---|---|---|
1 |
docker images [选项] [镜像名[:标签]] |
crictl images [选项] [镜像名[:标签]] |
列出本地镜像列表 |
2 |
docker pull [选项] 镜像名[:标签|@DIGEST] |
crictl pull [选项] 镜像名[:标签|@DIGEST] |
拉取镜像 |
3 |
docker push |
无 |
上传镜像 |
4 |
docker rmi [选项] 镜像... |
crictl rmi [选项] 镜像ID… |
删除本地镜像 |
5 |
docker inspect 镜像ID |
crictl inspect 镜像ID |
检查容器 |
序号 |
Docker命令 |
Containerd命令 |
备注 |
---|---|---|---|
1 |
docker ps [选项] |
crictl ps [选项] |
列出容器列表 |
2 |
docker create [选项] |
crictl create [选项] |
创建容器 |
3 |
docker start [选项] 容器ID... |
crictl start [选项] 容器ID... |
启动容器 |
4 |
docker stop [选项] 容器ID... |
crictl stop [选项] 容器ID... |
停止容器 |
5 |
docker rm [选项] 容器ID... |
crictl rm [选项] 容器ID... |
删除容器 |
6 |
docker attach [选项] 容器ID |
crictl attach [选项] 容器ID |
连接容器 |
7 |
docker exec [选项] 容器ID 启动命令 [参数...] |
crictl exec [选项] 容器ID 启动命令[参数...] |
进入容器 |
8 |
docker inspect [选项] 容器NAME|ID... |
crictl inspect [选项] 容器ID... |
查看容器详情 |
9 |
docker logs [选项] 容器ID |
crictl logs [选项] 容器ID |
查看容器日志 |
10 |
docker stats [选项] [容器ID...] |
crictl stats [选项] [容器ID] |
查看容器的资源使用情况 |
11 |
docker update [选项] 容器ID... |
crictl update [选项] 容器ID... |
更新容器资源限制 |
序号 |
Docker命令 |
Containerd命令 |
备注 |
---|---|---|---|
1 |
无 |
crictl pods [选项] |
列出Pod列表 |
2 |
无 |
crictl inspectp [选项] POD-ID... |
查看Pod详情 |
3 |
无 |
crictl start [选项] POD-ID... |
启动Pod |
4 |
无 |
crictl runp [选项] POD-ID... |
运行Pod |
5 |
无 |
crictl stopp [选项] POD-ID... |
停止Pod |
6 |
无 |
crictl rmp [选项] POD-ID... |
删除Pod |

Containerd创建并启动的容器会被kubelet立即删除,不支持暂停、恢复、重启、重命名、等待容器,Containerd不具备docker构建、导入、导出、比较、推送、查找、打标签镜像的能力,Containerd不支持拷贝文件,可通过修改containerd的配置文件实现登录镜像仓库。
