Artifact Registry 可讓您向 Docker Hub 驗證遠端存放區。雖然提取公開映像檔不需要驗證,但驗證可提高下載頻率限制。如要驗證,請使用 Docker Hub 使用者名稱和儲存為密鑰的個人存取權杖,設定遠端存放區。
事前準備
確認符合下列規定:
- 您已建立 Artifact Registry Docker 遠端存放區
- 您有 Docker Hub 帳戶。
必要的角色
如要取得設定遠端存放區 Docker Hub 驗證所需的權限,請要求管理員授予您專案的下列 IAM 角色:
- Artifact Registry 管理員 (
roles/artifactregistry.admin) - Secret Manager 管理員 (
roles/secretmanager.admin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
建立 Docker Hub 個人存取權杖
- 登入 Docker Hub。
- 建立具有唯讀權限的個人存取權杖。
複製存取權杖。
將存取權杖儲存至本機或 Cloud Shell 的文字檔。
將個人存取權杖儲存為密鑰版本
授予 Artifact Registry 服務帳戶存取密鑰的權限
與 Google Cloud 服務互動時,Artifact Registry 服務代理會代表 Artifact Registry 執行操作。如要允許服務代理使用儲存在 Secret Manager 中的密鑰,您必須授予服務代理查看密鑰版本的權限。
服務代理 ID 如下:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER 是執行 Artifact Registry 的 Google Cloud 專案編號。
如要將 Secret Manager 密鑰存取者角色授予 Artifact Registry 服務代理,請按照下列步驟操作:
控制台
-
前往 Google Cloud 控制台的「Secret Manager」頁面。
-
在「Secret Manager」頁面,勾選 Secret 名稱旁的核取方塊。
-
若面板尚未開啟,請按一下「Show Info Panel」(顯示資訊面板) 以開啟面板。
-
在資訊面板中,按一下「Add Principal」(新增主體)。
-
在「New principals」(新增主體) 文字區域中,輸入要新增的成員電子郵件地址。
-
在「Select a role」(請選擇角色) 下拉式選單中,依序選擇「Secret Manager」和「Secret Manager Secret Accessor」(Secret Manager 密鑰存取者)。
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
其中 member 是 IAM 成員,例如使用者、群組或服務帳戶。
C#
如要向 Artifact Registry 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Go
如要向 Artifact Registry 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Java
如要向 Artifact Registry 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要向 Artifact Registry 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
PHP
如要向 Artifact Registry 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要向 Artifact Registry 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Ruby
如要向 Artifact Registry 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
API
注意:與其他範例不同,這會取代整個 IAM 政策。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:setIamPolicy" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"policy\": {\"bindings\": [{\"members\": [\"member\"], \"role\": \"roles/secretmanager.secretAccessor\"}]}}"
如要進一步瞭解如何授予或撤銷密鑰存取權,請參閱「管理密鑰存取權」。
將 Docker Hub 憑證新增至遠端存放區
如要使用 Docker Hub 憑證更新遠端存放區,請按照下列步驟操作:
控制台
在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。
在存放區清單中,選取存放區,然後按一下「Edit Repository」(編輯存放區)。
在「Remote repository authentication mode」(遠端存放區驗證模式) 區段中,更新或新增 Docker Hub 使用者名稱,以及含有 Docker Hub 存取權杖的密鑰版本。
gcloud CLI
如要使用 Docker Hub 憑證更新遠端存放區,請執行下列指令:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=USERNAME \
--remote-password-secret-version=projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
更改下列內容:
REPOSITORY:Artifact Registry 遠端存放區的名稱。PROJECT_ID:您的 Google Cloud 專案 ID。LOCATION:存放區的區域或多區域位置。如果您設定了預設值,則可省略這個旗標。如要查看支援的位置清單,請執行gcloud artifacts locations list指令。USERNAME:您的 Docker Hub 使用者名稱。SECRET_PROJECT_ID:您建立 Secret 的Google Cloud 專案 ID。SECRET_ID:您為密鑰指定的名稱。SECRET_VERSION:儲存 Docker Hub 存取權杖的密鑰版本。
下次遠端存放區要求上游來源的構件時,就會使用您的憑證。
後續步驟
- 進一步瞭解 Artifact Registry 存放區。
- 使用 Docker 提取映像檔。
- 完成 Docker Hub 遠端存放區快速入門導覽課程。