首先,不要开始过度换气,因为Dockershim已被弃用。虽然Dockershim使您能够在Kubernetes中使用Dockercontainerd运行时,但它从未设计为嵌入到Kubernetes中。此外,它与Kubernetes的容器运行时接口(CRI)不兼容。dockershim的修复是为了弥合Docker的containerd和CRI之间的差距。
然而,维护dockershim很痛苦,因此Kubernetes开始弃用它。正如Pulumi开发者倡导者和云原生计算基金会(CNCF)大使KatCosgrove在Kubernetes的早期解释的那样,“我们只支持一个容器运行时。那个运行时是Docker引擎。那时候,并没有太多有很多其他选择,而Docker是处理容器的主要工具,因此这不是一个有争议的选择。”
不幸的是,Cosgrove承认,Kubernetes开发人员社区在通过删除Dockerhsim来传达他们正在做的事情方面做得很差。当我们说“Docker”时,我们可能指的是容器镜像,这也无济于事;Docker、公司或Docker运行时。通过删除Dockershim,我们仅指运行时。Docker容器在Kubernetes上仍然运行良好。正如Cosgrove总结的那样,“Docker不会消失,无论是作为一种工具还是作为一家公司。”尽管如此,“从kubelet中删除dockershim最终对社区、生态系统、项目和整个开源都有好处。
但如果你真的想坚持使用Docker引擎,即使Kubernetes不再原生支持它,你也可以。现在拥有Docker程序的Mirantis将继续在DockerEngine和MirantisContainerRuntimewithKubernetes中支持Dockershim。这个新的Dockershim程序cri-dockerd为DockerEngine提供了一个shim,使您能够通过KubernetesCRI控制Docker。