镜像和容器已然成为应用的打包和交付标准。Kubernetes成为了整个容器云原生应用的标准OS,越来越多的企业和用户选择在ACK中部署自己的应用。容器服务Kubernetes版(ACK)支持Docker和安全沙箱运行时,本文通过两种容器运行时实现和使用限制的对比、Docker和Containerd两种容器引擎常用命令对比、两种运行时部署结构对比,帮助您根据需求场景选择合适的容器运行时。

两种容器运行时实现和使用限制的对比

特性 Docker运行时 安全沙箱运行时 说明
集群类型 所有类型 标准托管版Kubernetes
节点型号
  • ECS
  • EBM
EBM
节点OS
  • CentOS
  • Aliyun Linux 2
  • Windows
Aliyun Linux 2定制版
  • 不支持同一节点同时部署Docker和安全沙箱两种运行时。
  • 暂不支持集群内Docker运行时节点和安全沙箱运行时节点的混部。
容器引擎 Docker Containerd
监控 支持 支持
容器日志文件采集 支持 Sidecar:手动支持 有关sidecar配置,请参见通过Sidecar-CRD方式采集容器日志
容器标准输出采集 支持 支持
RuntimeClass 不支持 支持(runv)
Pod调度 无需配置
  • kubernetes v1.14.x版本必须为nodeSelector增加以下配置。
    alibabacloud.com/sandboxed-container: Sandboxed-Container.runv
  • kubernetes v1.16.x以及更高版本不需要任何配置。
HostNetwork 支持 不支持
exec/logs 支持 支持
节点数据盘 可选 必选(不小于200GiB)
网络插件
  • Flannel
  • Terway
Terway:仅支持非独占弹性网卡模式。
kube-proxy代理模式
  • Iptables
  • IPVS
  • Iptables
  • IPVS
存储插件
  • CSI Plugin
  • FlexVolume
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 inspect crictl inspect ctr -n k8s.io c info
查看容器日志 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容器
安全沙箱
kubelet -> (CRI)containerd
                          \-> containerd-shim -> runC容器
                          \-> containerd-shim-kata-v2 -> runV安全沙箱容器