在 Artifact Registry 中存储 Docker 容器映像
Artifact Registry 提供用于管理私有软件包和 Docker 容器映像的单个位置。
本快速入门向您展示了如何执行以下操作:
- 在 Artifact Registry 中创建私有 Docker 代码库
- 设置身份验证
- 将映像推送到代码库
- 从代码库中拉取映像
如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示:
准备工作
- 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 API.
-
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 API.
选择 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 代码库
创建 Docker 代码库以存储此快速入门的示例映像。
控制台
打开 Google Cloud 控制台中的制品库页面。
依次点击添加 创建代码库。
指定
quickstart-docker-repo
作为该代码库的名称。选择 Docker 作为格式,选择标准作为模式。
在位置类型下,选择区域,然后选择位置
us-west1
。点击创建。
该代码库会被添加到代码库列表中。
gcloud
运行以下命令,在位置
us-west1
中创建一个名为quickstart-docker-repo
且带有说明“docker 代码库”的新 Docker 代码库。gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \ --location=us-west1 --description="Docker repository" \ --project=PROJECT
其中 PROJECT 是您的 Google Cloud 项目 ID。
运行以下命令确认已创建代码库。
gcloud artifacts repositories list \ --project=PROJECT
如需详细了解 Artifact Registry 命令,请运行 gcloud artifacts
命令。
配置身份验证
在推送或拉取映像之前,请将 Docker 配置为使用 Google Cloud CLI,用于对向 Artifact Registry 发出的请求进行身份验证。
如需为区域 us-west1
中的 Docker 代码库设置身份验证,请运行以下命令:
gcloud auth configure-docker us-west1-docker.pkg.dev
该命令将更新您的 Docker 配置。现在,您可以在 Google Cloud 项目中与 Artifact Registry 连接以推送和拉取映像。
如需了解其他身份验证方法,请参阅身份验证方法。
获取要推送的映像
在本快速入门中,您需要一个名为 hello-app
的示例映像。
运行以下命令以拉取映像的 1.0 版。
docker pull us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Artifact Registry 中的映像路径包含多个部分。对于此示例图片:
us-docker.pkg.dev
是存储在 Artifact Registry Docker 代码库中的容器映像的主机名,其中包含代码库的位置 (us
)。google-samples
是项目 ID。containers
是代码库 ID。/gke/hello-app
是代码库containers
中的映像的路径。
将映像添加到代码库中
如需将 Docker 映像推送到 Artifact Registry,您必须使用代码库名称标记该映像。
使用注册表名称标记映像
使用代码库名称标记 Docker 映像,会将 docker push
命令配置为将该映像推送到某个特定位置。在本快速入门中,主机位置为 us-west1-docker.pkg.dev
。
运行以下命令以将映像标记为 quickstart-image:tag1
:
docker tag us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 \ us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
地点
us-west1
是代码库位置。us-west1.docker.pkg.dev
是您创建的 Docker 代码库的主机名。- PROJECT 是您的 Google Cloud 项目 ID。 如果您的项目 ID 包含英文冒号 (`:`),请参阅网域级项目。
quickstart-docker-repo
是您创建的代码库的 ID。quickstart-image
是您要在仓库中使用的映像名称。该映像名称可能与本地映像名称不同。在本快速入门中,您将直接在代码库 IDquickstart-docker-repo
下存储映像。tag1
是要添加到 Docker 映像的标记。如果您没有指定标记,Docker 将应用默认标记latest
。
您现在可以将映像推送到您创建的代码库了。
将映像推送到 Artifact Registry
配置身份验证并标记本地映像后,您可以将映像推送到您创建的代码库。
要推送 Docker 映像,请运行以下命令:
docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
将 PROJECT 替换为您的 Google Cloud 项目 ID。 如果您的项目 ID 包含英文冒号 (`:`),请参阅网域级项目。
从 Artifact Registry 中拉取映像
如需将映像从 Artifact Registry 拉取到本地机器,请运行以下命令:
docker pull us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
将 PROJECT 替换为您的 Google Cloud 项目 ID。 如果您的项目 ID 包含英文冒号 (`:`),请参阅网域级项目。 您应该会看到类似如下所示的输出:
latest: Pulling from [PROJECT-ID]/quickstart-image:tag1 Digest: sha256:70c42... Status: Image is up to date for us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
清理
为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。
在移除代码库之前,请确保您要保留的任何映像在其他位置提供。
如需删除代码库,请执行以下操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,选择
quickstart-docker-repo
代码库。点击删除。
gcloud
如需删除 quickstart-docker-repo
代码库,请运行以下命令:
gcloud artifacts repositories delete quickstart-docker-repo --location=us-west1
后续步骤
- 详细了解如何使用容器映像。
- 详细了解 Docker。
- 阅读我们关于 DevOps 的资源,并探索 DevOps 研究和评估 (DORA) 研究项目。