为什么kubernetes不支持docker了
官方解释称,Docker 作为一个完整的容器技术堆栈,在其创建之初就不是为了将其嵌入 Kubernetes 而设计的。除了其作为容器运行时本身的作用以外,Docker 还包含了一系列方便用户交互的 UX 更改,而这些额外的功能对于 Kubernetes 来说过于臃肿。
事实上,Docker 并不符合 Kubernetes 的容器运行时接口标准(CRI),官方必须要维护一个名为 Dockershim 的中间件才能够把 Docker 当作 Kubernetes 的容器运行时来使用。因此,官方建议用户使用符合 CRI 的 containerd 或 CRI-O 作为取代 Docker 的容器运行时,并表示最早将于 v1.23 版本把 Dockershim 从 Kubelet 中移除。
不过,Kubernetes 官方表示用户今后依然可以使用 Docker 来构建容器镜像,而 Docker 生成的镜像实际上也是一个 OCI(Open Container Initiative)镜像。无论使用什么工具来构建镜像,任何符合 OCI 标准的镜像在 Kubernetes 看来都是一样的。containerd 和 CRI-O 则可以提取这些镜像并运行它们。