谈谈docker,containerd,runc,docker-shim,OCI之间的关系


谈谈docker,containerd,runc,docker-shim,OCI之间的关系

一、containerd

关于containerd的一些详解介绍,请参考containerd的官网

二、docker

docker本身而言包括了,docker client和dockerd(docker daemon),dockerd本身实属是对容器相关操作的api的最上层封装,
直接面向操作用户。

三、docker1.12.x

该版本的docker由 docker-client、dockerd、containerd、docker-shim、runc组成,现在来谈谈每个组件是用来干嘛的:

dockerd

dockerd本身实属是对容器相关操作的api的最上层封装,直接面向操作用户。

containerd

dockerd实际真实调用的还是containerd的api接口(rpc方式实现),containerd是dockerd和runc之间的一个中间交流组件。

docker-shim

docker-shim是一个真实运行的容器的真实垫片载体,每启动一个容器都会起一个新的docker-shim的一个进程。它直接通过指定的三个参数:容器id,boundle目录(containerd的对应某个容器生成的目录,一般位于:/var/run/docker/libcontainerd/containerID),运行是二进制(默认为runc)来调用runc的api创建一个容器(比如创建容器:最后拼装的命令如下:runc create 。。。。。)

runc

runc是一个CLI工具,用于根据OCI规范生成和运行容器。

他们之间的关系如下图:

OCI

Open Container Initiative(开放容器计划)是一个开放治理结构,其明确目的是围绕容器格式和运行时创建开放行业标准。

OCI由Docker和其他容器行业的领导者于2015年6月建立,目前包含两个规范:运行时规范(runtime-spec)和映像规范(image-spec)。 运行时规范概述了如何运行在磁盘上解压缩的“文件系统包”。 在较高级别上,OCI实现将下载OCI映像,然后将该映像解压缩为OCI运行时文件系统捆绑包。 此时,OCI运行时捆绑包将由OCI运行时运行。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM