ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
| layout | title | nav\_order | parent | | --- | --- | --- | --- | | default| Content Addressability | 4| Introduction | # [](https://github.com/opencontainers/.github/blob/master/docs/docs/introduction/digests.md#content-addressability)Content Addressability 内容寻址能力很重要,因此您可以提出自己的要求。当您从注册表中请求(拉出)容器时,注册表可能会提供[内容可寻址的存储](https://en.wikipedia.org/wiki/Content-addressable_storage)或某种类似的机制,以确保您*准确地*获得了所请求的内容。 ## 唯一资源标识符 我们如何索要容器?我们要求一个唯一的资源标识符(uri),大致以这种形式出现: ~~~ <registry>/<project>/<container>:<tag>@<digest> ~~~ 对于许多用户,上面的示例以一种熟悉的格式给出-一个服务器(注册表)具有较高级别的项目或组织(项目),在该项目下,一组具有不同版本的容器名称(标记和digets)。有些人可能会将整个第一个地址合并到一个通用标签“namespace”中: ~~~ <namespace>:<tag>@<digest> ~~~ 出于我们的目的,让我们使用语言来描述Docker Hub(注册表)上存储库的具体示例: ~~~ <registry>/<organization>/<repository>:<tag>@<digest> ~~~ * *注册表*:通常是一台运行带有API的软件的服务器,可与之交互以提取图像。在此示例中,Docker Hub是我们的注册表。 * *Organization*:是名称空间的一部分,并且是地址的一部分(更易于理解)。 * *存储库*是特定的容器。在Docker Hub上,这可能来自用户直接推送容器,或者来自连接的Webhook的自动构建。 让我们更具体地说明这个例子。这[是](https://hub.docker.com/_/busybox)Docker Hub上[的busybox](https://hub.docker.com/_/busybox)容器。我要拉它! 我可能会这样做: ~~~shell $使用默认标签:最新 最新:从库/忙箱中拉出 697743189b6d:拉出完成 摘要:sha256:061ca9704a714ee3e8b80523ec720c64f6209ad3f97c0ff7cb9ec7d19f15149f 状态:为busybox下载的较新图像:最新 ~~~ 太好了,我最终得到一个特定的标签(默认为“ latest”,并显示了我的容器的摘要),但是如果我想再次拉出容器,是否以相同的方式进行操作?好吧,看看“最新”(最近更新)的更改,[您会发现](https://hub.docker.com/_/busybox?tab=tags)我可能会得到一个不同的容器。 一个(稍微)更好的交互可能一直在要求一个特定的标签: ~~~shell $ docker pull busybox:1.30.1 1.30.1:从库/忙箱中拉出 摘要:sha256:061ca9704a714ee3e8b80523ec720c64f6209ad3f97c0ff7cb9ec7d19f15149f 状态:下载更新的图像为busybox的:1.30.1 ~~~ 引用容器的最佳方法可能不是最佳方法,因此所使用的方法会因项目而异。 ~~~shell $ docker pull busybox @ sha256:061ca9704a714ee3e8b80523ec720c64f6209ad3f97c0ff7cb9ec7d19f15149f ~~~