镜像和容器已然成为应用的打包和交付标准。Kubernetes成为了整个容器云原生应用的标准OS,越来越多的企业和用户选择在ACK中部署自己的应用。容器服务Kubernetes版(ACK)支持Docker和安全沙箱运行时,本文通过两种容器运行时实现和使用限制的对比、Docker和Containerd两种容器引擎常用命令对比、两种运行时部署结构对比,帮助您根据需求场景选择合适的容器运行时。
两种容器运行时实现和使用限制的对比
特性 |
Docker运行时 |
安全沙箱运行时 |
说明 |
集群类型 |
所有类型 |
标准托管版Kubernetes和标准专有版Kubernetes |
无 |
节点型号 |
|
EBM |
无 |
节点OS |
- CentOS
- Alibaba Cloud Linux 2
- Windows
|
Alibaba Cloud Linux 2定制版 |
- 不支持同一节点同时部署Docker和安全沙箱两种运行时。
- 集群内可以通过创建不同节点池来实现Docker运行时节点和安全沙箱运行时节点混合部署。
|
容器引擎 |
Docker |
Containerd |
无 |
监控 |
支持 |
支持 |
无 |
容器日志文件采集 |
支持 |
Sidecar:手动支持 |
有关Sidecar配置,请参见通过Sidecar-CRD方式采集容器日志。
|
容器标准输出采集 |
支持 |
支持 |
无 |
RuntimeClass |
不支持 |
支持(runv) |
无 |
Pod调度 |
无需配置 |
|
无 |
HostNetwork |
支持 |
不支持 |
无 |
exec/logs |
支持 |
支持 |
无 |
节点数据盘 |
可选 |
必选(不小于200 GiB) |
无 |
网络插件 |
|
- Flannel
- Terway:仅支持非独占弹性网卡模式。
|
无 |
kube-proxy代理模式 |
|
|
无 |
存储插件 |
CSI Plugin |
CSI Plugin |
无 |
容器RootFS |
OverlayFS |
DeviceMapper |
无 |
Docker和Containerd两种容器引擎常用命令对比
Docker运行时和安全沙箱运行时的容器引擎分别是Docker和Containerd。这两种容器引擎都有各自的命令工具来管理镜像和容器。两种容器引擎常用命令对比如下。
命令 |
Docker |
Containerd |
docker |
crictl(推荐) |
ctr |
查看容器列表 |
docker ps |
crictl ps |
ctr -n k8s.io c ls |
查看容器日志 |
docker logs |
crictl logs |
无 |
容器内执行命令 |
docker exec |
crictl exec |
无 |
挂载容器 |
docker attach |
crictl attach |
无 |
显示容器资源使用情况 |
docker stats |
crictl stats |
无 |
创建容器 |
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 images |
crictl images |
ctr -n k8s.io i ls |
查看镜像详情 |
docker inspect |
crictl inspecti |
无 |
拉取镜像 |
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 |
查看Pod列表 |
无 |
crictl pods |
无 |
查看Pod详情 |
无 |
crictl inspectp |
无 |
启动Pod |
无 |
crictl runp |
无 |
停止Pod |
无 |
crictl stopp |
无 |
两种运行时部署结构对比
运行时 |
部署结构 |
Docker |
kubelet -> dockerd -> containerd -> containerd-shim -> runC容器
|
安全沙箱v1 |
kubelet -> (CRI)containerd
\-> containerd-shim -> runC容器
\-> containerd-shim-kata-v2 -> runV安全沙箱容器
|
安全沙箱v2 |
kubelet -> (CRI)containerd
\-> containerd-shim -> runC容器
\-> containerd-shim-rund-v2 -> runV安全沙箱容器
|
在文档使用中是否遇到以下问题
更多建议
匿名提交