Container Registry 總覽

Container Registry 是在 Google Cloud Platform 上執行的私人容器映像檔註冊資料庫。Container Registry 支援 Docker Image Manifest V2 和 OCI 映像檔格式。

許多人皆使用 Dockerhub 做為儲存公開 Docker 映像檔的中央註冊資料庫,但是如果您要控制映像檔的存取權,則必須使用私人的註冊資料庫,例如 Container Registry。

您可以透過安全的 HTTPS 端點存取 Container Registry,進而從任何系統、VM 執行個體或您自己的硬體來推送、提取及管理映像檔。此外,您也可以使用 Docker 憑證輔助程式指令列工具,將 Docker 設定為直接驗證 Container Registry。

註冊資料庫名稱

Container Registry 中的註冊資料庫是按照主機和專案 ID 命名。如要使用映像檔 (像是執行推送、提取或刪除作業等),請使用下列格式來標示映像檔:

[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

[HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]

其中:

  • [HOSTNAME] 是下列其中一個選項:

    • gcr.io 目前代管位在美國的映像檔,但此位置日後可能會改變
    • us.gcr.io 代管位在美國的映像檔,使用的儲存空間值區與 gcr.io 代管的映像檔不同
    • eu.gcr.io 代管位在歐盟的映像檔
    • asia.gcr.io 代管位在亞洲的映像檔

    將映像檔推送至使用新主機名稱的註冊資料庫時,Container Registry 會在指定的多地區位置建立儲存空間值區。這個值區是註冊資料庫的基礎儲存空間,且此位置並非為您的位置,而是儲存映像檔的位置。在專案中,主機名稱相同的所有註冊資料庫會共用一個儲存空間值區。

  • [PROJECT-ID] 是您的 Google Cloud Platform Console 專案 ID。如果您的專案 ID 含有冒號 (:),請參閱下方的網域範圍專案一節。

  • [IMAGE] 是映像檔的名稱,可以和映像檔的本機名稱不同。在 Google Cloud Platform 主控台中,專案的註冊資料庫會按照映像檔名稱列出。每個存放區可儲存多個名稱相同的映像檔。例如,名稱為「quickstart-image」的映像檔在存放區中可以有數個不同版本。

  • 在結尾加上 :[TAG]@[IMAGE_DIGEST] 可讓您區分映像檔的特定版本,不過這是選用參數。如果您未指定標記或摘要,Container Registry 會尋找具有預設標記 latest 的映像檔。請參閱下方的註冊資料庫中的映像檔版本

例如,在這個快速入門導覽課程中,快速入門導覽課程映像檔的註冊資料庫為 gcr.io/[PROJECT-ID]。如要推送及提取此映像檔,請使用下列格式:

gcr.io/[PROJECT-ID]/quickstart-image:tag1

其中,[PROJECT-ID] 是您的 Google Cloud Platform Console 專案 ID

註冊資料庫中的映像檔版本

註冊資料庫可以包含許多映像檔,而且這些映像檔可以有不同的版本。如要識別註冊資料庫中映像檔的特定版本,您可以指定映像檔的標記或摘要。在註冊資料庫中,單一映像檔的所有標記均不會重複。每個映像檔版本的摘要會自動產生且不會重複,並採用 @[IMAGE_DIGEST] 的格式,其中 [IMAGE_DIGEST] 是映像檔內容的 sha256 雜湊值。

舉例來說,在快速入門導覽課程中,如要識別映像檔的特定版本:

  • 新增映像檔的標記:

    gcr.io/[PROJECT-ID]/quickstart-image:tag1
    
  • 或是新增映像檔的摘要:

    gcr.io/[PROJECT-ID]/quickstart-image@sha256:4d11e24ba8a615cc85a535daa17b47d3c0219f7eeb2b8208896704ad7f88ae2d
    

其中,[PROJECT-ID] 是您的 Google Cloud Platform Console 專案 ID。如果您的專案 ID 包含冒號 (:),請參閱下方的網域範圍專案

在主控台的「Images」(映像檔) 畫面中,「Tag」(標記) 資料欄會列出映像檔的標記。按一下映像檔的版本,即可查看包含「映像檔摘要」在內的中繼資料。

如要瞭解修改標記的方式,請參閱為映像檔加上標記

網域範圍專案

如果您的專案範圍是您的網域,則專案 ID 會包含後面加入冒號 (:) 的網域名稱。由於 Docker 處理冒號的方式有所不同,因此當您在 Container Registry 中指定映像檔時,必須將冒號字元換成正斜線。請使用下列格式來識別這些專案類型中的映像檔:

[HOSTNAME]/[DOMAIN]/[PROJECT]/[IMAGE]

例如,ID 為 example.com:my-project 的專案可能會有下列映像檔:

gcr.io/example.com/my-project/image-name

網址格式的註冊資料庫名稱

網址 https://[HOSTNAME]/[PROJECT-ID]/[IMAGE] 是 GCP 主控台中該註冊資料庫的網址。具備該註冊資料庫的存取權且通過驗證的任何使用者皆可造訪這些連結。請參閱本文上方說明以瞭解如何建構註冊資料庫名稱

舉例來說,下列網址會連結至 GCP 主控台中的公開註冊資料庫:

容器映像檔格式

Container Registry 支援 Docker Image Manifest V2 和 OCI 映像檔格式。

詳情請參閱容器映像檔格式

存取權控管

在與註冊資料庫屬於同個專案的 Cloud Storage 值區中,Container Registry 會儲存容器映像檔的標記和層級檔案。如要設定此值區的存取權,請使用 Cloud Storage 的身分與存取權管理 (IAM) 設定。

根據預設,專案擁有者和編輯者擁有權限,可推送及提取該專案的 Container Registry 值區。專案檢視者則只有提取權限。

詳情請參閱設定存取權控管

如要瞭解將映像檔中繼資料從 Cloud Storage 移至高效能後端資料庫的相關計劃,請參閱 Container Registry 的淘汰通知

驗證

您可以使用 gcloud docker -a 指令來設定 Docker 驗證機制使用 GCP 憑證。Container Registry 支援使用存取權憑證或 JSON 金鑰檔的進階驗證方法

Docker 憑證輔助程式

Docker 需要 Container Registry 的存取權來推送及提取映像檔。您可以使用 Docker 憑證輔助程式指令列工具,設定要搭配 Docker 使用的 Container Registry 憑證。

憑證輔助程式會先自動擷取 Container Registry 憑證,或是從 --token-source 標記指定的位置擷取憑證,接著再將憑證寫入 Docker 的設定檔。這樣一來,您就可以使用 Docker 的指令列工具 docker,直接與 Container Registry 互動。

詳情請參閱進階驗證

Container Registry 服務帳戶

啟用 Container Registry API 時,Container Registry 會在專案中新增服務帳戶,其名稱如下所示:

service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com

這個 Container Registry 服務帳戶是專門設計用來讓 Container Registry 在您的專案上執行服務職責。此帳戶為 Google 所擁有,但僅供特定專案使用,並且會列在 GCP 主控台的「服務帳戶」和「IAM」區段中。

如果您刪除此服務帳戶或變更其權限,某些 Container Registry 功能將無法正確運作,因此我們建議您不要修改角色或刪除帳戶。

鏡像

mirror.gcr.io 註冊資料庫是 Docker Hub 官方存放區的全域 Container Registry 鏡像。

透過鏡像可以加速 Docker Hub 存放區的提取作業。使用 mirror.gcr.io 時,您的用戶端會嘗試先從 Container Registry 鏡像提取 Docker Hub 官方映像檔。

詳情請參閱使用 Container Registry 和 Docker Hub 鏡像

通知

您可以使用 Cloud Pub/Sub 來取得容器映像檔的變更通知。

詳情請參閱設定 Cloud Pub/Sub 通知

透過 GCP 使用 Container Registry

Compute Engine 執行個體和 Google Kubernetes Engine 叢集可以根據執行個體上的 Cloud Storage 範圍推送和提取 Container Registry 映像檔。請參閱透過 GCP 使用 Container Registry 的相關說明。

儲存在 Container Registry 的映像檔可部署至 App Engine 彈性環境

持續推送軟體更新工具整合

Container Registry 使用數種常用的持續推送軟體更新系統

透過第三方解決方案使用 Container Registry

當您在開發應用程式時,可以使用第三方叢集管理、持續整合或 GCP 以外的其他解決方案。Container Registry 能與這些外部服務整合。

這些解決方案可能無法讓您存取 gcloud 指令列工具來進行驗證程序。在這類情況下,您可以使用 docker login 直接驗證 Container Registry。詳情請參閱進階驗證

部分第三方解決方案 (如 Kubernetes) 會提供與 Container Registry 整合的說明文件

如需可與 Container Registry 整合的第三方解決方案完整清單,請參閱持續推送軟體更新工具整合一文。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Container Registry 說明文件