参考自:
Docker学习:Image的本地存储结构_weixin_34054866的博客-CSDN博客
docker中各ID之间的关系和计算(二)-layerID-diffID-chainID-cacheID的计算_Penguinbupt的博客-CSDN博客
本地下载的docker镜像存储在/var/lib/docker/image/overlay2/目录下。
在一上目录下有distribution 、 imagedb 、 layerdb 三个目录和 repositories.json文件。
repositories.json中存储的是本地所有镜像列表,如下
repositories.json存储格式为:
{"Repositories":
{"reponame":
{"reponame:tag":"sha256:digest1",
"reponame@sha256:digest2":sha256:digest1,.......
},
.......
}
}
digest1和digest2不同,digest1应该是镜像内容的摘要,digest2的话.......?同一个镜像一个用tag标识,一个用sha256,即digest2标识
在imagedb目录下有content 和 metadata两个目录
metadata目录中存储每个镜像的parent镜像的ID以及当前镜像的最后更新时间,没有parent镜像的目录为空
parent里面的内容:
content目录存储镜像的json格式的描述信息:
- config: 未来根据这个image启动container时,config里面的配置就是运行container时的默认参数。
-
container: 此处为一个容器ID,一般我们执行
docker build
构建镜像时,可以看见是不断地生成新的container,然后提交为新的image,此处的容器ID即生成该镜像时临时容器的ID,后面通过docker build
构建镜像会进一步验证。 - container_config:上述临时容器的配置,可以对比containner_config与config的内容,字段完全一致,验证了config的作用。
- history:构建该镜像的所有历史命令
- rootfs:该镜像包含的layer层的diff id
layerdb目录:
layerdb目录下有mounts 、 sha256 、 tmp三个子目录
最重要的为sha256目录,其内为每个layer解压后的内容计算的sha256摘要为名字的目录,即layer的diffID,
再里面就是:
- diff:layer 的diff ID
- size:layer的大小(字节)。当计算为MB时是这里面的数值除以1000000,而不是除以(1024*1024)
- tar-split.json.gz:layer层数据tar压缩包的split文件。该文件生成需要依赖tar-split,通过这个文件可以还原layer的tar包。
- cache-id:内容为一个uuid,指向Layer本地的真正存储位置
那么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的相加得出
distribution目录
该目录包含了Layer层diif id和digest之间的对应关系。里面是diffid-by-digest 、 v2metadata-by-diffid两个目录。
- 其中diffid-by-digest保存了digest(layerID)->diffID的映射关系,即distribution hashes和Content hashes的映射关系。也即是正向查询。
- v2metadata-by-diffid保存了diffid -> (digest,repository)的映射关系,这可以方便查找layer的digest及其所属的repository。也即是反向查询,可以从diffID->layerID(其实就是digest)。
文章来源:https://www.toymoban.com/news/detail-421315.html
文章来源地址https://www.toymoban.com/news/detail-421315.html
到了这里,关于客户端(本地)docker镜像存储结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!