本文將介紹容器映像檔的相關重要概念,包括登錄檔、存放區和構件。本文也會提供基本資訊,說明這些概念如何套用至 Artifact Registry 和 Container Registry。
本頁面的 Artifact Registry 範例主要指 Docker 格式和 gcr.io 存放區。詳情請參閱「支援的格式」和「存放區總覽」。
登錄檔
登錄檔會儲存及發布容器映像檔和構件,並依存放區中的名稱整理。登錄檔可包含單一或多個存放區,且可以是公開或私人。
Docker Hub 和 Artifact Registry 等登錄檔服務提供建立公開或私有存放區的選項。提取公開映像檔時,請務必瞭解可能存在的安全疑慮。如要進一步瞭解如何監控安全漏洞及減少依附元件足跡,請參閱「依附元件管理」。
登錄檔會整理成存放個別容器映像檔的存放區。Artifact Registry 可讓您在單一專案中建立多個存放區,並將特定區域或多區域位置與每個存放區建立關聯。相關存放區可能會依標籤分組。Artifact Registry 存放區和映像檔管理
在 Artifact Registry Docker 格式的存放區中,您可以在同一個存放區儲存多個名稱不同的容器映像檔。每個映像檔版本都會以映像檔摘要識別,並可與標記建立關聯。標記可以是可變更或不可變更的。如要進一步瞭解容器映像檔版本和標記,請參閱「容器映像檔版本」。
Artifact Registry 通常會參照映像檔路徑的各個部分,藉此識別專案、區域或多區域位置,以及映像檔名稱,並搭配標記或資訊清單摘要來識別正確版本。例如:
docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
us-west1是存放區的位置docker.pkg.dev是 Docker 格式存放區的主機名稱。PROJECT是由Google Cloud 專案 ID 建立的命名空間。quickstart-docker-repo是專案中的命名空間,用於儲存圖片。在 Artifact Registry 中,路徑的這部分稱為存放區。quickstart-image是quickstart-image所有版本的名稱,通常稱為「映像檔」。tag1是指定映像檔版本的標記。
圖片
Artifact Registry 可儲存構件和映像檔。構件可以是任何內容,例如文字檔、Docker 映像檔或 Helm chart,而映像檔通常是指容器映像檔。容器映像檔是軟體套件,內含在任何環境中執行的所有必要元素。詳情請參閱「什麼是容器」。
映像檔會推送或上傳至存放區,並從存放區提取或下載。如要指定正確的映像檔和版本,必須指定專屬登錄檔和構件。
如要進一步瞭解 Artifact Registry 中的存放區和映像檔名稱,請參閱「存放區和映像檔名稱」。
資料層
存放區中儲存的容器映像檔是使用層逐步建構而成。不同圖片可以共用部分圖層。圖層的定義方式會因圖片類型而異。舉例來說,Dockerfile 中的每個指令都對應於 Docker 映像檔中的一個層。在登錄檔中,具有共通層的映像檔會共用這些層,進而提升儲存效率。為確保安全,不同登錄檔之間不會共用層。
刪除容器映像檔時,系統不會立即刪除圖層。系統每天會刪除登錄檔中任何圖片未參照的層。
標記
使用者將映像檔推送到存放區或從存放區提取映像檔時,會新增標記來指定映像檔版本。圖片可以有一個或多個標記,也可以完全沒有標記。 如果您使用可變更的標記,並以相同標記推送映像檔兩次,系統會從第一個映像檔移除標記,並移至第二個映像檔,導致第一個映像檔沒有標記。您仍可使用資訊清單摘要存取未加上標記的映像檔。
如果您使用不可變更的標記,則不得執行下列動作:
- 刪除標記的圖片。您仍可刪除未標記的圖片。
- 從圖片中移除標記。
- 將映像檔推送至存放區,但該映像檔的標記已由其他版本使用。
latest 標記是推送映像檔時附加的特殊標記,且不含標記。
例如:
docker push us-west1-docker.pkg.dev/my-project/my-repo/hello-app
將映像檔推送至 hello-app:latest
docker pull us-west1-docker.pkg.dev/my-project/my-repo/hello-app
提取映像檔 hello-app:latest。
請注意,如果映像檔推送至存放區時使用的標記不是 latest,系統就不會新增 latest 標記,因此 latest 映像檔可能不是最新版本。建議您為發行內容使用 latest 以外的標記。
資訊清單
映像檔資訊清單會指定每個映像檔內的層,並提供專屬 ID。 資訊清單會以稱為資訊清單摘要的專屬 SHA-256 雜湊識別。 與標記相比,資訊清單摘要更可靠且安全,因為在具有可變動標記的存放區中,相同映像檔的多個版本可以推送至相同標記,導致部分映像檔沒有標記,而每個映像檔都會由其資訊清單摘要唯一指定。
如果您使用工具掃描或分析圖片,這些工具的結果只適用於掃描的圖片。為確保您部署的是掃描過的映像檔,請勿依賴標記,因為標記參照的映像檔可能會變更。
如要進一步瞭解 Artifact Registry 的特定標記和資訊清單,請參閱「管理映像檔」和「使用容器映像檔」。
圖片預熱
對於使用影像串流的延遲時間敏感型應用程式,在新節點或執行個體上等待提取影像 (通常稱為「冷啟動」) 可能會造成不必要的延遲。預先暖機功能可讓您在要求圖片前,明確開始將圖片下載到圖片串流快取中。這個程序可確保 GKE 叢集要求映像檔時,映像檔能快速交付。
如要預先暖機映像檔,請使用 Artifact Registry API。如需相關操作說明,請參閱「使用映像檔預先暖機功能縮短延遲時間」。