DockerHub 镜像仓库原理

镜像仓库


在定义任何的dockerfile的时候,都有一个from,需要一个基础镜像,这个基础镜像比如ubuntu,他就要去外网仓库里面拉去镜像,镜像仓库解决的是文件分发和存储的问题

不同的部门有不同的项目,这不同的项目我们叫做repository,在不同的子仓库里面我们又有一个一个的镜像保存在那里,同时每个镜像又有不同的标签。

主镜像仓库的域名,然后镜像仓库下面那哪个项目,那个镜像,哪个版本,这些信息就唯一的标示了一个容器镜像。

一个容器镜像包含了两个部分,一个是元数据,其实就是由dockerfile构建出来的描述文件,这个描述文件会说这个容器镜像有多少层,每一层里面有什么内容,它的checksum这些信息都会记录下来,还有最终的可执行文件在哪就是在存储数据里面,就是在一个一个的blob里面,真正占有空间的就是这些blob。 

镜像仓库遵循OCI的Distribution Spec


容器镜像本身也支持了oci的规范,它分为image规范,容器运行时规范,后面又加了分发的规则,分发规范就是去定义了去实现一个容器镜像仓库,只要我实现了这些API,那我就可以和你这种runtime去做互动了,那么我就实现了一个镜像仓库。

扫描二维码关注公众号,回复: 14511187 查看本文章

数据和块文件


镜像是由元数据和块文件组成的,元数据里面就是对这些镜像的一个描述的核心信息,它包含的就是镜像的仓库信息,标签信息,校验码信息等等。通过这些信息就可以看到容器镜像是如何构建出来的。通过inspect就可以看到镜像的元数据信息。

那块文件就是真正组成镜像的联合文件层的实体。

imagefs,如果是docker的话,那么在overylay2下面,这个目录其实就是用来存放块文件的。

当你拉取一个容器镜像的时候,它相当于就将将块文件放在imagefs下面,进去那个目录就可以看到一个一个真实的文件了。

镜像仓库


镜像仓库其实就是将元数据和blob的真实信息存储在服务器端,它就负责存储这些文件,并且分发这些文件,这是镜像仓库的一个职责

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/126655557