赞
踩
docker中各ID之间的关系和计算(二)-layerID-diffID-chainID-cacheID的计算_Penguinbupt的博客-CSDN博客
在一上目录下有distribution 、 imagedb 、 layerdb 三个目录和 repositories.json文件。
repositories.json中存储的是本地所有镜像列表,如下
{"Repositories":
{"reponame":
{"reponame:tag":"sha256:digest1",
"reponame@sha256:digest2":sha256:digest1,.......
},
.......
}
}
digest1和digest2不同,digest1应该是镜像内容的摘要,digest2的话.......?同一个镜像一个用tag标识,一个用sha256,即digest2标识
metadata目录中存储每个镜像的parent镜像的ID以及当前镜像的最后更新时间,没有parent镜像的目录为空
parent里面的内容:
content目录存储镜像的json格式的描述信息:
docker build
构建镜像时,可以看见是不断地生成新的container,然后提交为新的image,此处的容器ID即生成该镜像时临时容器的ID,后面通过docker build
构建镜像会进一步验证。layerdb目录下有mounts 、 sha256 、 tmp三个子目录
最重要的为sha256目录,其内为每个layer解压后的内容计算的sha256摘要为名字的目录,即layer的diffID,
再里面就是:
那么Layer本地真正的存储位置又在何处呢?便是上面提到的/var/lib/docker/overlay2
目录下:
需要注意,layerdb目录下除了diff、size、cache_id和tar-split.json.gz文件,还应该包括一个parent文件,文件存储了当前Layer层的父层chain_id,因为当前alpine镜像只有一层,所以也就没有parent。
一个layer的chain-id为当前layer的id和所有parent layer的id的相加得出
该目录包含了Layer层diif id和digest之间的对应关系。里面是diffid-by-digest 、 v2metadata-by-diffid两个目录。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。