dockershim是Kubernetes社区为了能让Docker成为其支持的容器运行时,所维护的一个兼容程序,kubernetes v1.24 起 kubernetes 官方不在维护。

docker 和 k8s 历史背景

  • 2013/3 Docker 开源
  • 2014/6 Google 开源 Kubernetes
  • 2015/6 OCI 成立
  • 2016/7 Docker Swarm 发布,同时 kubernetes 也支持 Docker,并且 Docker 的优势远大于其他容器引擎,如 RKT。同年 kubernetes 在容器编排中占主导地位
  • 2016/12 kubernetes 发布 CRI
  • 2017/3 rkt 和 containerd 捐献给 CNCF
  • 2017/11 kubernetes 支持 containerd
  • 2018/5 kubernetes 集成 containerd(cri-containerd)
  • 2020/12 kubernetes 废弃 dockershim,开始由 Mirantis 和 Docker 共同维护
  • 移除原因:
  • k8s 需要根据客户需求,接入更多容器,因此发布了 CRI
  • shim 是集成 docker 的临时方案,并随着时间的推移,为 kubelet 带来很多的复杂性
  • 2022/8/24 Kubernetes v1.25 正式发布

kubernetes 调用 runtime 的变化

(kubernetes's kubelet docker client) -> docker

// dockershim 由 k8s 开发,k8s v1.20 之前内置
(kubernetes's kubelet <-CRI-> dockershim) -> docker -> containerd -> containerd-shim -> runc

// kubernetes v1.24之后,自行安装
kubernetes's kubelet <-CRI-> cri-dockerd(原dockershim,由 Mirantis 和 Docker 共同维护) -> docker -> containerd -> containerd-shim -> runc