2. Docker Daemon中的Reference

在我们查看docker的存储目录时,是否看到过下图的文件,该文件记录所有docker 镜像的Reference信息:
在这里插入图片描述
内容如下:

{
    
    
	"Repositories": {
    
    
		"nginx": {
    
    
			"nginx:latest": "sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85",
			"nginx@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31": "sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85"
		},
		"rancher/hello-world": {
    
    
			"rancher/hello-world:latest": "sha256:cab3bc026f39f4070347ea317ad92a50ffac666454de81dc838b7d5e0cf8173d",
			"rancher/hello-world@sha256:4b1559cb4b57ca36fa2b313a3c7dde774801aa3a2047930d94e11a45168bc053": "sha256:cab3bc026f39f4070347ea317ad92a50ffac666454de81dc838b7d5e0cf8173d"
		}
	}
}

1.Reference表示索引,通过索引可以查询到某imageID信息,Reference类型定义在distribution模块,Reference包含类型如下:

Named: 包含镜像名称,一般包括:domain 与 path
Tagged: 包含Tag信息
NamedTagged:包含Name信息与Tag信息,例如nginx:latest Digested:包含镜像的Digest信息
Canonical: 包含Name信息与Digest信息,例如nginx@sha256:0d17b565c37bcbxxxx

2.在Docker Daemon服务中,在分析Reference模块提供的能力前,我们创建几个Tag,如图所示:
在这里插入图片描述
1)References(id digest.Digest) []reference.Named
根据IMAGE ID 查找到所有ref信息,可能是NamedTaggedCanonical等,根据上图的Nginx镜像,返回数组包含:abc:123jqk:aaanginx:latest

2)ReferencesByName(ref reference.Named) []Association
根据Repo的refName 可以查找到所有的ref,假设有三个镜像分别是nginx:123, nginx:aaa, nginx:bbb,则可以通过nginx 查找到三个Ref信息,包括domain、path、digest等。

3)AddTag(ref reference.Named, id digest.Digest, force bool)
将参数id代指的IMAGE ID新增一个Tag,Tag的内容封装在ref结构里。

4)AddDigest(ref reference.Canonical, id digest.Digest, force bool)
将参数id代指的IMAGE ID新增一个Digest,Digest的内容封装在ref结构里,执行docker pull 下载镜像的时候,会为当前的IMAGE ID 添加Digest。

5)Delete(ref reference.Named)
删除ref

6)Get(ref reference.Named) (digest.Digest, error)
根据ref获取IMAGE ID

上述Ref信息持久化到/var/lib/docker/image/overlay2/repositories.json,该文件记录所有的Ref与IMAGE ID 映射关系。当我们手动修改repositories.json文件,增加一个TagRef,nginx:add,重启dockerd,执行docker images可以看到新增Ref信息。
在这里插入图片描述
分析Docker内部实现原理,在我们常规使用Docker的过程中并不能带来什么明显的好处,就算是无聊中的寂寞消遣吧,有些东西学起来可能仅仅是满足好奇心,一种知识丰富大脑的满足感、自豪感。

猜你喜欢

转载自blog.csdn.net/xjmtxwd24/article/details/124860509