eStargz(seekable tar.gz)是一个向后兼容的tar.gz格式,最初是由google的‣项目引入,estargz是对其的改进,支持chunk级别的verification以及对运行时进行了性能优化。传统的tar.gz格式存在以下问题:
eStargz解决了上述问题,并开启了lazy pulling,此外还支持文件的预取,这可用于减轻因按需获取每个文件而导致的运行时性能缺陷。这个扩展是向后兼容的,因此 eStargz 格式的映像可以推送到registry上,甚至可以在与 eStargz 无关的运行时上运行。
eStargz是一个文件gzip压缩的tar archive和一个叫做TOC的元数据组件构成,每个非空常规文件和每个元数据组件必须单独压缩为 gzip。这个结构继承自stargz。因此,gzip 标头必须位于以下位置。
eStargz blob 中的大型常规文件可能会被分块成几个较小的 gzip 成员。在此文档中,每个分块成员都称为分块。因此,gzip 标头可能位于以下位置。
eStargz 格式的 blob 是这些 gzip 成员的串联,这是一个仍然有效的 gzip blob。
eStargz包含一个名为TOC的常规文件,该文件记录eStargz中所有文件条目的元数据(例如名称,文件类型,所有者,偏移量等)除了TOC自己。容器运行时可以使用 TOC 挂载容器的文件系统,而无需下载整个层内容。TOC必须是一个名为stargz.index.json的JSON文件,并且是作为tar的最后一个条目。以下字段包含构成TOC的主要属性。
version
int
This REQUIRED property contains the version of the TOC. This value MUST be 1
.
entries
array of objects
This property MUST contain an array of TOCEntry of all tar entries and chunks in the blob, except stargz.index.json
.