近日,Kubernetes 官方发布公告,宣布自 v1.20 起放弃对 Docker 的支持,届时用户将收到 Docker 弃用警告,并需要改用其他容器运行时。但 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 则可以提取这些镜像并运行它们。
业内人士认为,自从 Docker 在容器编排引擎之争中败给 Kubernetes 后,这样的结局或许早已注定。
官方声明地址:https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/
本文地址:https://www.oschina.net/news/122387/k8s-will-abandon-docker