建立 Docker Hub 遠端存放區
建立遠端存放區,做為 Docker Hub 的 Proxy。
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 建立 Docker Hub 帳戶。
-
如要建立遠端存放區並授予個別存放區的存取權,請在專案中指派 Artifact Registry 管理員 (
roles/artifactregistry.admin
): -
如要建立及管理密鑰:
專案的 Secret Manager 管理員角色 (
roles/secretmanager.admin
)
必要的角色
如要取得建立 Docker Hub 遠端存放區所需的權限,請要求管理員授予下列 IAM 角色:
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
選擇殼層
如要完成本快速入門導覽課程,請使用 Cloud Shell 或本機殼層。
- Cloud Shell
- Cloud Shell 是殼層環境,用於管理託管在 Google Cloud上的資源。這個環境已預先安裝 Docker 和 Google Cloud 的主要指令列介面:Google Cloud CLI。 Google Cloud
- 本機殼層
- 如果您想要使用本機殼層,就必須在環境中安裝 Docker 和 gcloud CLI。
啟動 Cloud Shell
請執行下列步驟來啟動 Cloud Shell:
前往 Google Cloud 控制台。
按一下「Activate Cloud Shell」(啟用 Cloud Shell) 按鈕:
。
此時 Cloud Shell 工作階段會在主控台底部的頁框中開啟,您可以使用這個殼層來執行 gcloud
指令。
設定本機殼層
如要安裝 gcloud CLI 和 Docker,請執行下列步驟:
安裝 gcloud CLI。如要更新現有安裝項目,請執行
gcloud components update
指令。如果尚未安裝 Docker,請先安裝。
Docker 需要具備權限的存取權,才能與登錄檔互動。 在 Linux 或 Windows 上,將用於執行 Docker 指令的使用者新增至 Docker 安全性群組。在 macOS 上不需要執行這個步驟,因為 Docker Desktop 會以 root 使用者身分在虛擬機器上執行。
Linux
Docker 安全性群組稱為
docker
。 如要新增使用者名稱,請執行下列指令:sudo usermod -a -G docker ${USER}
Windows
Docker 安全性群組稱為
docker-users
。 如要從管理員命令提示字元新增使用者,請執行下列指令:net localgroup docker-users DOMAIN\USERNAME /add
地點
- DOMAIN 是您的 Windows 網域。
- USERNAME 是您的使用者名稱。
如要讓群組成員異動生效,請登出後再重新登入。 如果您使用的是虛擬機器,可能需要重新啟動虛擬機器,成員異動才會生效。
如要確認 Docker 正在運作,請執行下列 Docker 指令,可傳回目前的時間和日期:
docker run --rm busybox date
--rm
旗標會在結束時刪除容器執行個體。
設定 Docker Hub 驗證
如要避免使用未經驗證的 Docker Hub 配額,建議您在使用遠端存放區時,向 Docker Hub 進行驗證。您可以在遠端存放區中新增 Docker Hub 使用者名稱和儲存為密鑰的個人存取權杖,以便進行 Docker Hub 驗證。
建立 Docker Hub 個人存取權杖
- 登入 Docker Hub。
- 建立具有「read-only」權限的個人存取權杖。
複製存取權杖。
將存取權杖儲存至本機或 Cloud Shell 的文字檔。
將個人存取權杖儲存在密碼中
主控台
-
前往 Google Cloud 控制台的「Secret Manager」頁面。
-
在「Secret Manager」(密鑰管理工具) 頁面中,按一下「Create Secret」(建立密鑰)。
-
在「建立密鑰」頁面的「名稱」下方,將密鑰命名為
my-secret
。 -
在「Secret value」(密鑰值) 欄位中,輸入 Docker Hub 個人存取權杖。
-
請勿變更「區域」部分。
-
按一下「Create secret」(建立密鑰) 按鈕。
gcloud CLI
gcloud secrets create my-secret --data-file="/path/to/file.txt"
其中 /path/to/file.txt
是指包含個人存取權杖的文字檔位置。
授予 Artifact Registry 服務帳戶存取密鑰的權限
主控台
-
前往 Google Cloud 控制台的「Secret Manager」頁面。
-
在「Secret Manager」頁面中,按一下
my-secret
旁邊的核取方塊。 -
如果面板尚未開啟,請按一下「Show Info Panel」(顯示資訊面板) 開啟面板。
-
在資訊面板中,按一下「新增主體」。
-
在「新增主體」文字區域中,輸入 Artifact Registry 服務帳戶的電子郵件地址。Artifact Registry 服務帳戶電子郵件地址的格式如下
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
其中 PROJECT-NUMBER 是您的專案編號。
如要找出專案編號,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「資訊主頁」頁面。
-
按一下頁面頂端的「Select from」下拉式清單。
-
在隨即顯示的「Select from」視窗中,選取所需專案。
專案資訊主頁的「Project info」(專案資訊) 卡片會顯示專案 ID 和專案編號。
-
-
在「Select a role」(請選擇角色) 下拉式選單中,依序選擇「Secret Manager」和「Secret Manager Secret Accessor」。
gcloud CLI
gcloud secrets add-iam-policy-binding my-secret \ --member="serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
其中 PROJECT-NUMBER 是專案的專案號碼。
如要找出專案編號,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「資訊主頁」頁面。
-
按一下頁面頂端的「Select from」下拉式清單。
-
在隨即顯示的「Select from」視窗中,選取所需專案。
專案資訊主頁的「Project info」(專案資訊) 卡片會顯示專案 ID 和專案編號。
建立遠端存放區
執行下列指令,在 us-central1
位置建立名為 quickstart-docker-hub-remote
的 Artifact Registry 遠端存放區,並使用 Docker Hub 認證:
gcloud artifacts repositories create quickstart-docker-hub-remote \
--project=PROJECT_ID \
--repository-format=DOCKER \
--location=us-central1 \
--description="Remote Docker repository" \
--mode=remote-repository \
--remote-repo-config-desc="Docker Hub" \
--remote-docker-repo=DOCKER-HUB \
--remote-username=USERNAME \
--remote-password-secret-version=projects/PROJECT/secrets/my-secret/versions/1
其中:
quickstart-docker-hub-remote
是存放區的名稱。專案中每個存放區位置的存放區名稱不得重複。PROJECT_ID
是您的專案 ID。如果省略這個標記,系統會使用目前或預設專案。us-central1
是存放區的區域或多區域位置。如果您設定 default,可以省略這個旗標。如要查看支援的位置清單,請執行gcloud artifacts locations list
指令。"Remote Docker repository"
是存放區的選填說明。 請勿加入機密資料,因為存放區說明不會經過加密。"Docker Hub"
是這個遠端存放區的外部存放區設定說明 (選用)。DOCKER-HUB
會將遠端存放區上游設定為公開 Docker Hub 上游。- USERNAME 是您的 Docker Hub 使用者名稱。
projects/PROJECT/secrets/my-secret/versions/1
是您建立的密鑰版本,用於儲存 Docker Hub 個人存取權杖。
Artifact Registry 會建立存放區,並將其新增至存放區清單。
設定 Docker 驗證
在推送或提取映像檔前,請先設定 Docker,透過 Google Cloud CLI 驗證傳送至 Artifact Registry 的要求。
以執行 Docker 指令的使用者身分登入 gcloud CLI。
gcloud auth login
如要為
us-central1
區域中的 Docker 存放區設定驗證機制,請執行下列指令:gcloud auth configure-docker us-central1-docker.pkg.dev
這個指令會更新 Docker 設定。您現在可以在 Google Cloud 專案中連結 Artifact Registry,以推送及提取映像檔。
如要瞭解其他驗證方式,請參閱驗證方式的相關說明。
將映像檔提取至遠端存放區
以執行 Docker 指令的使用者身分登入 gcloud CLI。
gcloud auth login
使用下列指令,將 Docker Hub 中的映像檔提取到您的電腦,並放入遠端存放區:
docker pull us-central1-docker.pkg.dev/PROJECT/quickstart-docker-hub-remote/busybox:latest
其中:
us-central1
是遠端存放區位置。us-central1-docker.pkg.dev
是您建立的 Docker 存放區主機名稱。- PROJECT 是您的 Google Cloud
專案 ID。
如果您的專案 ID 包含冒號 (
:
),請參閱網域範圍專案。 quickstart-docker-hub-remote
是您建立的存放區 ID。busybox
是要從 Docker Hub 提取到quickstart-docker-hub-remote
的映像檔名稱。latest
是您要從 Docker Hub 提取的已加上標記的映像檔版本。
映像檔會提取到您的電腦,並快取在遠端存放區中。 如果再次提取相同的已加上標記的映像檔,系統會從遠端存放區提取。系統會使用您的 Docker Hub 憑證。
列出儲存在遠端存放區中的構件:
gcloud artifacts packages list \ --location=us-central1 \ --repository=quickstart-docker-hub-remote
輸出結果會與下列內容相似:
Listing items under project my-project, location us-central1, repository quickstart-docker-hub-remote. PACKAGE: busybox CREATE_TIME: 2023-06-19T18:59:09 UPDATE_TIME: 2023-06-19T18:59:10
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本頁所用資源的費用,請按照下列步驟操作。
刪除存放區
如要保留專案,但只刪除存放區資源,請按照本節的步驟操作。如要刪除整個專案,請按照「刪除專案」一節的步驟操作。
移除存放區之前,請先確認要保留的映像檔均已存放於其他位置。
如要刪除存放區,請按照下列指示操作:
主控台
在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。
在存放區清單中,選取
quickstart-docker-hub-remote
存放區。點選「刪除」。
gcloud
如要刪除 quickstart-docker-hub-remote
存放區,請執行下列指令:
gcloud artifacts repositories delete quickstart-docker-hub-remote \ --location=us-central1
刪除專案
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
後續步驟
- 瞭解不同的 Artifact Registry 存放區模式。
- 進一步瞭解 Artifact Registry 遠端存放區。
- 進一步瞭解 CI/CD。