docker 中 镜像关键概念(registry、repository、manifest、image、layer)

话不多说,先上图

1:registry:

 registry主要用于保存Docker镜像,包括镜像层次结构镜像的元数据。 用户可以自己的数据中心搭建私有的registry,也可以使用Docker官方的registry服务(Docker Hub) Docker Hub 中有两种类型仓库:用户仓库(user repository【普通Docker Hub 用户创建】)和顶层仓库(top-level   repository【Docker公司负责维护、验证、架构良好且安全】)。

2:repository:

repository 是具有某个功能的docker镜像的所有迭代版本构成的镜像组。

repository 的命名规则:用户名/repository  两部分组成,即 username/repositoryname  的形式。如docker.io/nginx  、docker.io/mysql  、docker.io/ubuntu 等等。

3:image:

image用来存储一组元数据信息(镜像的架构、默认配置、构建镜像的容器配置、所有镜像层(layer)信息的rootfs)。

如:username/repositoryname:tagname1、username/repositoryname:tagname2、username/repositoryname:tagname3和username/repositoryname:lastest,隶属于命名为username/repositoryname 的 repository 下。

我们在装有Docker服务的pull 两个镜像(docker.io/mysql 和 mcr.microsoft.com/mssql/server),并查看repositories.json 文件可以看到如下信息。

[root@localhost overlay2]# cat /var/lib/docker/image/overlay2/repositories.json 

{
	"Repositories": {
		"docker.io/mysql": {
			"docker.io/mysql:latest": "sha256:91dadee7afeebe274c51104d572ab6a2dc0ae97473f71afc57fbfd48c0ceb8aa",
			"docker.io/mysql@sha256:4589ba2850b93d103e60011fe528fc56230516c1efb4d3494c33ff499505356f": "sha256:91dadee7afeebe274c51104d572ab6a2dc0ae97473f71afc57fbfd48c0ceb8aa"
		},
		"mcr.microsoft.com/mssql/server": {
			"mcr.microsoft.com/mssql/server:latest": "sha256:ba266fae5320e745f1354ed1fe620b58855e5ed62f1fa0c962efe3a2734e0c92",
			"mcr.microsoft.com/mssql/server@sha256:0753f9e9c614c469e1e6b98ea60b21e20abd249323c9f6a9eab476c87a8cf826": "sha256:ba266fae5320e745f1354ed1fe620b58855e5ed62f1fa0c962efe3a2734e0c92"
		}
	}
}

4:layer:

layer 是一个Docker用来管理镜像层的中间概念,由上图可见 镜像是镜像层组成的,而单个镜像层可以被多个镜像共享。

执行docker image 命令

[root@localhost overlay2]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
mcr.microsoft.com/mssql/server   latest              ba266fae5320        4 months ago        1.57 GB
docker.io/mysql                  latest              91dadee7afee        12 months ago       477 MB

与repositories.json的信息一对比就能看到 layer、image、repository他们之间的关系

5:manifest:

manifest 描述文件,主要存在于registry中作为docker镜像的元数据文件,在pull、push、save、load中作为镜像结构和基础信息的描述文件。在镜像被pull 或则load到宿主机时、manifest被转为了本地镜像配置文件config。

镜像文件位置与镜像相关配置信息如下图

产考资料:《Docker 容器与容器云 (第2版)》-----------浙江大学SEL实验室著

发布了12 篇原创文章 · 获赞 0 · 访问量 650

猜你喜欢

转载自blog.csdn.net/oopxiajun2011/article/details/105029232