首先来说结论,Kubernetes 弃用 Docker 对程序员没有什么影响。原因很简单,程序员可以继续使用 Docker Image,因为 Docker 的容器镜像 (Image) 遵循 OCI 标准,这是 Docker 在 2015 年发起的标准。Kuberenetes 的容器镜像就是支持的 OCI 标准。
为什么 K8s 要宣布不支持 Docker?
这是因为 K8s 只需要 Docker 的容器功能,而 Docker 本身包含了下面的几大功能。
- Container Runtime
APICLINetworkVolumes
除了容器功能,其他部分 K8s 都有自己的解决方案,所以为了减少对资源的需求,也减少攻击面,去掉整体 Docker 支持是有意义的。
Minikube 会受影响吗?Dockershim 是什么?
Minikube 不会受影响,因为 minikube 还会包含支持 Docker 用的 Dockershim。Dockershim 是 K8s 支持 Docker 运行时(Runtime) 的接口,但是因为 Docker 运行时不完全支持 K8s 发起的 CRI (Container Runtime Interface) 所以 K8s 决定放弃 Dockershim,以后的运行时会使用 Containerd 或者 CRI-O,它们同样支持 OCI 容器格式标准。从这个角度看,K8s 确实是完全放弃了 Docker,因为它连 Docker 的容器运行时也不要了。