| 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
~~~