在 Kubernetes 中,dockershim 是一个兼容层,旨在让 Kubernetes 与 Docker 容器运行时兼容。它充当了 Kubernetes 与 Docker 之间的桥梁,使得 Kubernetes 能够通过 Docker 来启动、管理容器,而不需要直接与 Docker 的底层 API 交互。
在 Kubernetes 最初的版本中,Kubernetes 使用 Docker 作为其容器运行时。当时,Docker 提供了一个容器运行时接口(Docker Engine API),而 Kubernetes 需要一个统一的方式来与各种容器运行时(包括 Docker)进行交互。为了让 Kubernetes 与 Docker 兼容,Kubernetes 依赖于 dockershim 来实现这一目的。
dockershim 是 Kubernetes 用来连接和管理 Docker 容器的桥梁,它封装了 Kubernetes 与 Docker 之间的通信细节。Kubernetes 的 Container Runtime Interface (CRI) 规范定义了容器运行时与 Kubernetes 的交互标准,而 dockershim 则是这个标准与 Docker 的实现。
具体来说,dockershim 的作用是:
从 Kubernetes v1.20 开始,Kubernetes 团队宣布将不再将 dockershim 作为默认的容器运行时,计划在后续版本中弃用它。弃用的主要原因如下: