本页面介绍如何管理 Docker 代码库中的容器映像。管理映像包括列出代码库中的映像、添加标记、删除标记、将映像复制到新代码库以及删除映像。
如需了解如何推送和拉取映像,请参阅推送和拉取映像。
准备工作
- 如果目标代码库不存在,请创建新代码库。
- 验证您是否拥有访问代码库所需的权限。
- (可选)为 gcloud 命令配置默认值。
所需的角色
如需获取管理图片所需的权限, 请让管理员授予您 代码库中的以下 IAM 角色:
-
查看映像、映像中的文件和标记:
Artifact Registry 读取者 (
roles/artifactregistry.reader
) -
使用 Artifact Registry 标记映像或修改标记:
Artifact Registry Writer (
roles/artifactregistry.writer
) -
删除图片或移除标签:
Artifact Registry 代码库管理员 (
roles/artifactregistry.repoAdmin
)
如需详细了解如何授予角色,请参阅管理访问权限。
列出图片
仓库模式:标准、远程
您可以使用 Google Cloud 控制台或 gcloud CLI 列出这些映像。
代码库列表包含 Artifact Registry 和 Container Registry 代码库使用 Container Registry 中的映像 请参阅有关管理映像的 Container Registry 文档。控制台
如需查看代码库中的映像,请执行以下操作:
打开 Google Cloud 控制台中的制品库页面。
点击包含容器映像的制品库。
点击某个映像可查看其版本。
gcloud
列出默认项目、代码库和 配置了默认值时的位置:
gcloud artifacts docker images list
要列出代码库中特定位置的映像,请运行以下命令: 命令:
gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY
如需列出特定映像的所有摘要和标记,请运行以下命令:
gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
--include-tags
替换以下值:
- LOCATION 是 单区域或多区域 代码库的位置。
- PROJECT 是您的 Google Cloud 项目 ID。 如果您的项目 ID 包含英文冒号 (`:`),请参阅网域级项目。
- REPOSITORY 是存储了映像的代码库的名称。
- IMAGE 是代码库中的映像名称。
--include-tags
会显示映像的所有版本,包括摘要和标记。如果省略此标志,则返回的列表仅包含顶级容器映像。
例如,假设一个映像具有以下特征:
- 代码库位置:
us-west1
- 代码库名称:
my-repo
- 项目 ID:
my-project
- 映像名称:
my-image
完整的代码库名称为:
us-west1-docker.pkg.dev/my-project/my-repo
完整的映像名称为:
us-west1-docker.pkg.dev/my-project/my-repo/my-image
如需详细了解映像名称格式,请参阅代码库和映像名称。
列出文件
仓库模式:标准、远程
您可以列出存储区中的文件、 容器映像或特定映像版本中的文件
对于以下所有命令,您可以设置要返回的文件数上限
方法是在命令中添加 --limit
标志。
列出默认项目、代码库和 配置了默认值时的位置:
gcloud artifacts files list
如需列出指定项目、代码库和位置中的文件,请运行以下命令:
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION
如需列出特定容器映像的所有版本的文件,请执行以下操作:
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION \
--package=PACKAGE
如需列出特定容器映像版本的文件,请执行以下操作:
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION \
--package=PACKAGE \
--version=VERSION
要列出特定标记的文件,请执行以下操作:
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION \
--package=PACKAGE \
--tag=TAG
替换以下值:
LOCATION
: 单区域或多区域 代码库的位置。PROJECT
:您的 Google Cloud 项目 ID。 如果您的项目 ID 包含英文冒号 (`:`),请参阅网域级项目。REPOSITORY
:映像所在代码库的名称 。PACKAGE
:映像的名称。VERSION
:映像摘要,一个以sha256:
开头的字符串。TAG
:与容器映像关联的标记。
示例
请考虑以下图片信息:
- 项目:
my-project
- 仓库:
my-repo
- 代码库位置:
us-west1
- 图片:
my-app
以下命令将列出 my-repo
中
默认项目中的位置 us-west1
:
gcloud artifacts files list \
--location=us-west1 \
--repository=my-repo
以下命令用于列出映像版本中具有
摘要:sha256:88b205d7995332e10e836514fbfd59ecaf8976fc15060cd66e85cdcebe7fb356
gcloud artifacts files list \
--project=my-project \
--location=us-west1 \
--repository=my-repo \
--package=my-app \
--version=sha256:88b205d7995332e10e836514fbfd59ecaf8976fc15060cd66e85cdcebe7fb356
以下命令用于列出映像版本中具有
代码 1.0-dev
gcloud artifacts files list \
--project=my-project \
--location=us-west1 \
--repository=my-repo \
--package=my-app \
--tag=1.0-dev
标记映像
您可以标记 Artifact Registry 代码库中的现有映像,也可以 然后再将其推送到代码库
标记代码库中的映像
仓库模式:标准
您可以使用 Google Cloud 控制台或命令行。在代码库中,每个映像版本的标记各不相同。因此,如果某个映像存在多个版本,则每个标记仅适用于其中一个版本。如果使用已被占用的标记来标记映像,则该标记将从原始版本迁移到新标记的版本。
控制台
如需标记代码库中的映像,请执行以下操作:
打开 Google Cloud 控制台中的制品库页面。
点击映像以查看映像的版本。
选择要标记的映像版本。
在所选版本的行中,点击更多操作 (),然后点击修改标记。
在字段中输入新标记,然后点击保存。
gcloud
如需标记代码库中的映像,请使用以下代码指定映像版本: 映像摘要或标记,然后指定要添加的标记。运行下列其中一个命令:
gcloud artifacts docker tags add IMAGE-VERSION TAG
地点
例如,假设一个映像具有以下特征:
- 代码库位置:
us-west1
- 代码库名称:
my-repo
- 项目 ID:
my-project
- 映像名称:
my-image
- 现有标记:
iteration6-final
- 要添加的标签:
release-candidate
如需向带有标记 iteration6-final
的映像版本添加标记 release-candidate
,请运行以下命令:
gcloud artifacts docker tags add \
us-west1-docker.pkg.dev/my-project/my-repo/my-image:iteration6-final \
us-west1-docker.pkg.dev/my-project/my-repo/my-image:release-candidate
如需详细了解映像名称格式 包括处理网域级项目、 请参阅代码库和映像名称。
标记本地映像
如需将任何本地映像推送到 Artifact Registry,您首先需要使用代码库名称标记该映像,然后再进行推送。如需查看相关说明,请参阅推送和拉取。
取消对映像的标记
仓库模式:标准
您可以使用 Google Cloud 控制台或命令行。
控制台
打开 Google Cloud 控制台中的制品库页面。
点击映像以查看映像的版本。
选择要取消标记的映像版本。
在所选版本的行中,点击更多操作 (),然后点击修改标记。
删除标记,然后点击保存。
gcloud
如需删除标记并将其从映像中移除,请运行以下命令:
gcloud artifacts docker tags delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE:TAG
地点
删除映像
仓库模式:标准、远程
您可以删除整个容器映像,也可以删除特定映像版本 与标记或摘要相关联。
- 图片一经删除便无法撤消。
- 删除图片不会立即删除引用的图层。未引用 每天删除一次。
- 对于远程仓库,图片的缓存副本会被移除。 来自上游来源的图片仍然可用。如果遥控器 如果代码库收到针对同一映像的新请求 重新下载和缓存
还有其他工具可帮助您管理未使用的映像。例如
gcr-cleaner
工具根据不同的条件查找并删除旧图片。移除未使用的映像有助于降低存储费用。gcr-cleaner
工具不是 Google 官方产品。
如需通过 Google Cloud 控制台或 gcloud CLI 删除映像,请执行以下操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
点击映像名称即可查看该映像的版本。
选择您要删除的版本。
点击删除。
在确认对话框中,点击删除。
gcloud
如需删除某个映像及其所有标记,请运行以下命令:
gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE --delete-tags
如需删除特定映像版本,请使用以下命令之一。
gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE:TAG [--delete-tags]
或
gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE@IMAGE-DIGEST [--delete-tags]
地点
- LOCATION 是 单区域或多区域 代码库的位置。
- PROJECT 是您的 Google Cloud 项目 ID。 如果您的项目 ID 包含英文冒号 (`:`),请参阅网域级项目。
- REPOSITORY 是存储了映像的代码库的名称。
- IMAGE 是代码库中的映像名称。
- TAG 是您要删除的版本的标记。如果多个标记与同一映像版本相关联,则您必须添加
--delete-tags
才能删除映像版本,而无需先移除标记。 - IMAGE-DIGEST 是您要删除的版本的 sha256 哈希值。如果某个标记与映像摘要相关联,则您必须添加
--delete-tags
才能删除映像版本,而无需先移除标记。 --delete-tags
会移除应用于映像版本的所有标记。借助此标志,您可以在以下情况下强制删除映像版本:- 您指定了一个标记,但有其他标记与映像版本相关联。
- 您指定的映像摘要至少具有一个标记。
后续步骤
- 下载各个文件 而无需使用 Docker 命令存储在映像中对于 快速检查清单文件