Docker、containerd的关系
Docker、containerd的关系containerd囊括了单机运行一个容器时所需要的一切:为了能够支持多种OCI Runtime,containerd 内部使用containerd-shim,每启动一个容器都会创建一个新的containerd-shim进程,指定容器ID,Bundle目录,运行时的二进制(比如runc)1、dockerdocker本身而言,包括docker client和d
Docker、containerd的关系
containerd
囊括了单机运行一个容器时所需要的一切:
为了能够支持多种OCI Runtime
,containerd
内部使用containerd-shim
,每启动一个容器都会创建一个新的containerd-shim
进程,指定容器ID,Bundle目录,运行时的二进制(比如runc)
1、docker
docker
本身而言,包括docker client
和dockerd
,是一个客户端工具,用来把用户的请求发送给docker daemon(dockerd)
。
dockerd
:dockerd
是对容器相关操作的最上层封装,直接面向操作用户。Docker daemon
,一般也会被称为docker engine
。dockerd
启动时会启动containerd
子进程。
2、containerd
containerd
是一个工业级别标准的容器运行时,它强调简单性、健壮性和可移植性,几乎囊括了单机运行一个容器运行时所需要的一切:执行、分发、监控、网络、构建、日志等。主要作用是:
- 1)、管理容器的生命周期(从创建容器到销毁容器)
- 2)、拉取/推送容器镜像
- 3)、存储管理(管理镜像及容器数据的存储)
- 4)、调用runC运行容器(与runC等容器运行时交互)
- 5)、管理容器网络接口及网络
dockerd
实际真实调用的还是containerd
的api接口,containerd
是dockerd
和runC
之间的一个中间交流组件。
3、containerd-shim
containerd-shim
是一个真实运行容器的载体,为了能够支持多种OCI Runtime
,containerd
内部使用containerd-shim
,每启动一个容器都会起一个新的containerd-shim
的进程。它通常指定三个因素:容器ID、bundle目录(对应某个容器生成的目录,一般位于:/var/run/docker/containerd/containerID)
4、runC
runC
是一个轻量级的工具,用来运行容器的,我们可以不用通过docker引擎,直接运行容器。
总的来说docker镜像
和containerd镜像
通用,但组织方式和存放目录不同,导致docker与ctr命令不通用,各自管理自己的镜像和容器。此外k8s还有客户端命令crictl
,用法与docker
基本相同,可crictl -h
查看用法。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)