创建 Docker Hub 远程仓库
创建一个远程仓库,将其用作 Docker Hub 的代理。
准备工作
- 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.
-
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.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 创建 Docker Hub 账号。
所需的角色
如需获得创建 Docker Hub 远程仓库所需的权限,请让管理员向您授予以下 IAM 角色:
-
如需创建远程代码库并授予对各个代码库的访问权限,请执行以下操作:
Artifact Registry 管理员 (
roles/artifactregistry.admin
) 针对项目 -
如需创建和管理 Secret,请执行以下操作:
Secret Manager Admin 角色 (
roles/secretmanager.admin
) 针对项目
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
选择 shell
如需完成本快速入门,请使用 Cloud Shell 或本地 shell。
- Cloud Shell
- Cloud Shell 是一种 shell 环境,用于管理托管在 Google Cloud 上的资源。它预安装有 Docker 和 Google Cloud CLI,这是 Google Cloud 的主要命令行界面。
- 本地 shell
- 如果您更喜欢使用本地 Shell,则必须在您的环境中安装 Docker 和 gcloud CLI。
启动 Cloud Shell
要启动 Cloud Shell,请执行以下步骤:
转到 Google Cloud 控制台。
点击激活 Cloud Shell 按钮:。
控制台下方的框架内会打开一个 Cloud Shell 会话。您可以使用此 shell 运行 gcloud
命令。
设置本地 shell
如需安装 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。
- 创建只读个人访问令牌 权限。
复制访问令牌。
将访问令牌保存到本地或 Cloud Shell 的文本文件中。
将个人访问令牌保存在 Secret 中
控制台
-
转到 Google Cloud 控制台中的 Secret Manager 页面。
-
在 Secret Manager 页面上,点击创建密钥。
-
在创建密钥页面的名称下,将您的密钥命名为
my-secret
。 -
在 Secret value 字段中,输入您的 Docker Hub 个人访问令牌。
-
保持区域部分不变。
-
点击创建密钥按钮。
gcloud CLI
gcloud secrets create my-secret --data-file="/path/to/file.txt"
其中 /path/to/file.txt
是包含您的个人访问令牌的文本文件的位置。
向 Artifact Registry 服务账号授予对 Secret 的访问权限
控制台
-
转到 Google Cloud 控制台中的 Secret Manager 页面。
-
在 Secret Manager 页面上,点击
my-secret
旁边的复选框。 -
如果面板尚未打开,请点击显示信息面板以打开面板。
-
在信息面板中,点击添加主账号。
-
在新主账号文本区域中,输入 Artifact Registry 服务账号的电子邮件地址。Artifact Registry 服务账号电子邮件地址的格式如下
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
其中,PROJECT-NUMBER 是您的项目编号。
如需查找项目编号,请执行以下操作:
-
前往 Google Cloud 控制台中的信息中心页面。
-
点击页面顶部的请选择:下拉列表。
-
在随即显示的从以下列表中选择:窗口中,选择您的项目。
项目 ID 和项目编号会显示在项目信息中心的项目信息卡片上。
-
-
在选择角色下拉列表中,选择 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 控制台中。
-
点击页面顶部的请选择:下拉列表。
-
在随即显示的请选择:窗口中,选择您的项目。
项目 ID 和项目编号显示在项目信息中心的项目信息卡片上。
创建远程仓库
创建一个名为
位置 us-central1
中具有您的 Docker Hub 的 quickstart-docker-hub-remote
创建凭据:
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
是代码库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行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 个人访问权限而创建的 Secret 版本 令牌。
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 控制台中的制品库页面。
在代码库列表中,选择
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。