当看到这个消息身为刚学会Docker的我无非当头一棒,表面风轻云淡的,心里已经在祝母亲节快乐了。看大佬们一顿分析K8s弃用Docker无非两个原因,Kubernetes底层用的是容器技术,并非是Docker。还有就是Kubernetes使用的CRI直接可以调用containerd,使用Docker的话还会有一层的资源浪费。不过Kubernetes也还有CRI-O接口,可以对接各种容器技术,Docker,rkt等等,大家如果调用docker还是没问题的,但是你需要接受多一层的资源浪费。这帮人是真能炒作,毛毛雨,洒洒水啦。不过还是需要了解这些底层调用的。

Docker daemon(dockerd)

dockerd本身实属是对容器相关操作的api的最上层封装,直接面向操作用户。主要作用就是与docker client实现交互。

containerd

官网
截至2019年2月28日,容器化是Cloud Native Computing Foundation中的一个正式毕业项目,紧随Kubernetes, Prometheus,Envoy和 CoreDNS之后。
containerd可用作Linux和Windows的守护程序。它管理着整个主机系统的整个容器生命周期,从图像传输和存储到容器执行和监督,再到低级存储再到网络附件等等。
dockerd实际真实调用还是containerd的api接口(rpc方式实现),containerd可以看成是dockerd和runc之间的一个中间件。
在这里插入图片描述

docker-shim

docker-shim是一个真实运行的容器的真实垫片载体,每次启动一个容器都会拉起一个新的docker-shim的一个进程,直接通过指定三个参数来调用runc的api创建一个容器。

  • 容器id
  • boundle目录
  • 运行二进制(默认runc)

runc

runc是一个命令行工具,根据OCI(容器开放组织)的标准来创建和运行容器。
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐