Docker中的存储库是否包含一个基础层,在该基础层之上添加了所有其他层?



我正在学习Docker,想要澄清存储库的含义。

存在一条联合文件系统层链。在这个链中有对不同(可能不是全部)层的引用,这些引用被称为标签。在Docker上下文中,引用单个链中的层的标签集称为存储库。对吗?

我特别感兴趣的是我们是否可以在一个存储库中有多个层链。据我所知我们不能,是这样吗?

存储库有点像注册中心的名称空间。授权是在存储库级别处理的,在从存储库中提取blob和manifest之前,必须将它们推送(或装载)到存储库中。

这些blob是图像层和配置,每个都由它们的摘要引用(因为注册表是一个CAS,一个内容可寻址的存储)。由于blob是内容可寻址的,因此您只存储它们一次,并且如果您再次尝试推送它们,它们将自动删除重复数据。图像的清单通过摘要列出了层和配置,它本身由摘要表示。标签是一个(通常是可变的)指向清单摘要的指针。

同一存储库中任意两个清单所引用的层可以是相同的、重叠的或完全不相交的。两个清单之间不需要有任何共同的层次要求。因此,对这个问题的简短回答是肯定的,您可以在一个存储库中拥有多个层链。

所有中间层和基础层都被缓存并存储一次(每层id/构建步骤的哈希值),即使它们用于不同的构建(图像标签)或具有相同的第一个构建步骤的不同图像

最新更新