本页面介绍如何推送和拉取容器映像。
如需了解如何列出、标记和删除映像,请参阅管理映像。
准备工作
- 如果目标代码库不存在,请创建新代码库。
- 您必须至少具有代码库的 Artifact Registry Writer 访问权限。
- 安装 Docker(如果尚未安装)。
- 为 Docker 配置身份验证。
推送映像
如需将本地映像推送到 Artifact Registry 代码库,请使用代码库名称标记该映像,然后再推送映像。
标记本地映像
确定映像的名称。完整映像名称的格式为:
LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE
其中:
LOCATION 是存储映像的代码库所在的单区域或多区域位置。
PROJECT 是您的 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (
:
),请参阅网域级项目。REPOSITORY 是存储了映像的代码库的名称。
IMAGE 是映像的名称。该名称可能与映像的本地名称不同。
例如,假设一个映像具有以下特征:
- 代码库位置:
us
- 代码库名称:
my-repo
- 项目 ID:
my-project
- 本地映像名称:
my-image
- 目标映像名称:
test-image
本示例的此映像名称为:
us-docker.pkg.dev/my-project/my-repo/test-image
如需详细了解映像名称格式(包括如何处理网域级项目),请参阅代码库和映像名称。
运行以下命令以使用代码库名称标记本地映像:
docker tag SOURCE-IMAGE LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE
其中 SOURCE-IMAGE 是本地映像名称或映像 ID。
此命令会使用代码库名称命名映像并应用
latest
标记。对于上一步中的示例映像,如果本地映像
my-image
位于当前目录中,请使用以下命令:docker tag my-image us-docker.pkg.dev/my-project/my-repo/test-image
如果要应用特定标记,请使用以下命令:
docker tag SOURCE-IMAGE LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE:TAG
如需使用示例映像标记
staging
,请在命令中添加:staging
:docker tag my-image us-docker.pkg.dev/my-project/my-repo/test-image:staging
将带有标记的映像推送到 Artifact Registry
使用以下命令推送带有标记的映像:
docker push LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE
此命令将推送带有 latest
标记的映像。如果要推送带有不同标记的映像,请使用以下命令:
docker push LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE:TAG
当您推送映像时,它会存储在指定的代码库中。
推送您的映像后,您可以执行以下操作:
转到 Cloud Console 查看映像。
运行
gcloud
命令来查看映像的标记和自动生成的摘要:gcloud artifacts docker images list \ LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE [--include-tags]
以下示例输出显示了被截断的映像摘要,但该命令始终返回完整的映像摘要。
IMAGE DIGEST CREATE_TIME UPDATE_TIME us-west1-docker.pkg.dev/my-project/my-repo/my-image sha256:85f... 2019-04-10T15:08:45 2019-04-10T15:08:45 us-west1-docker.pkg.dev/my-project/my-repo/my-image sha256:238... 2019-04-10T17:23:53 2019-04-10T17:23:53 us-west1-docker.pkg.dev/my-project/my-repo/my-image sha256:85f... 2019-04-10T15:08:46 2019-04-10T15:08:46 ```
拉取映像
如需从代码库中拉取映像,请使用以下命令:
docker pull LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE:TAG
或
docker pull LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE@IMAGE-DIGEST
其中:
LOCATION 是存储映像的代码库所在的单区域或多区域位置。
PROJECT 是您的 Google Cloud Console 项目 ID。如果您的项目 ID 包含英文冒号 (
:
),请参阅网域级项目。REPOSITORY 是存储了映像的代码库的名称。
IMAGE 是代码库中的映像名称。
TAG 是您要拉取的映像版本的标记。
IMAGE-DIGEST 是映像内容的 sha256 哈希值。 映像的每个版本都有唯一的映像摘要。在 Google Cloud Console 中,点击特定映像可查看其元数据。此摘要将被列为映像摘要。
例如,假设一个映像具有以下特征:
- 代码库位置:
us
- 代码库名称:
my-repo
- 项目 ID:
my-project
- 映像名称:
test-image
- 标记:
staging
用于拉取映像的命令如下:
docker pull us-docker.pkg.dev/my-project/my-repo/test-image:staging
后续步骤
- 了解如何管理标记和删除映像。
- 如果要在 Compute Engine 上运行容器,请了解 Compute Engine 上的容器。