本文將介紹容器映像檔的相關重要概念,包括登錄檔、存放區和構件。本文也包含這些概念如何套用至 Artifact Registry 和 Container Registry 的基本資訊。
本頁面的 Artifact Registry 範例主要指 Docker 格式和 gcr.io 存放區。詳情請參閱「支援的格式」和「存放區總覽」。
登錄檔
登錄檔會儲存及發布容器映像檔和構件,並依存放區中的名稱整理。註冊表可以包含單一儲存庫或多個儲存庫,可以是公開的,也可以是私有的。
Docker Hub 和 Artifact Registry 等登錄檔服務提供建立公開或私密存放區的選項。提取公開映像檔時,請務必瞭解可能存在的安全疑慮。如要進一步瞭解如何監控安全漏洞及減少依附元件足跡,請參閱依附元件管理。
登錄檔會整理成存放個別容器映像檔的存放區。Artifact Registry 可讓您在單一專案中建立多個儲存庫,並將特定的 區域或多區域位置 與每個儲存庫關聯。相關儲存庫可依 labels 分組。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。如需操作說明,請參閱「使用映像檔預先暖機功能縮短延遲時間」。
後續步驟
- Docker 快速入門
- 處理容器影像
- Helm 快速入門導覽課程
- 使用 Helm 資訊套件
- 閱讀有關 DevOps 的內容,並探討 DORA 研究計畫。