使用Google Artifact Registry Python客户端查询Docker镜像的问题
使用Google Artifact Registry Python客户端获取唯一镜像名及虚拟仓库上游镜像
一、仅列出仓库中唯一的镜像名称
当前list_docker_images会返回所有镜像的所有版本,要获取唯一镜像名称需要手动解析并去重,metadata参数无法直接实现这个需求——它主要用于配置请求元数据(比如重试策略、超时设置等),不支持对返回结果进行过滤或去重。
具体实现步骤:
- 调用
list_docker_images获取仓库内所有镜像条目 - 从每个镜像的
name字段中提取基础镜像名(剥离仓库路径、标签和摘要信息) - 利用集合的自动去重特性,整理出唯一名称列表
示例代码:
from google.cloud import artifactregistry_v1 def get_unique_docker_image_names(project_id, location, repo_name): # 初始化客户端 client = artifactregistry_v1.ArtifactRegistryClient() # 构造仓库的父路径 parent = client.repository_path(project_id, location, repo_name) # 获取仓库内所有Docker镜像 all_images = client.list_docker_images(parent=parent) unique_names = set() for image in all_images: # 解析镜像名称:从完整路径中提取最后一段,再剥离标签/摘要 image_full_part = image.name.split("/")[-1] # 兼容带标签(如:v1)或摘要(如@sha256:...)的格式 base_name = image_full_part.split(":")[0].split("@")[0] unique_names.add(base_name) # 返回排序后的唯一名称列表 return sorted(unique_names) # 调用示例 unique_images = get_unique_docker_image_names("你的项目ID", "你的区域", "你的仓库名") for name in unique_images: print(name)
二、从虚拟仓库列出包含上游仓库的镜像
可以实现,但需要在调用list_docker_images时指定view=FULL参数。默认的BASIC视图仅返回虚拟仓库自身存储的镜像,而FULL视图会包含所有已配置的上游仓库中的镜像(前提是虚拟仓库已正确关联上游源)。
示例代码:
from google.cloud import artifactregistry_v1 def list_virtual_repo_all_images(project_id, location, virtual_repo_name): client = artifactregistry_v1.ArtifactRegistryClient() parent = client.repository_path(project_id, location, virtual_repo_name) # 使用FULL视图获取包含上游仓库的所有镜像 all_images = client.list_docker_images( parent=parent, view=artifactregistry_v1.DockerImageView.FULL ) # 同样处理去重,获取唯一镜像名称 unique_names = set() for image in all_images: image_full_part = image.name.split("/")[-1] base_name = image_full_part.split(":")[0].split("@")[0] unique_names.add(base_name) return sorted(unique_names) # 调用示例 virtual_repo_images = list_virtual_repo_all_images("你的项目ID", "你的区域", "你的虚拟仓库名") for name in virtual_repo_images: print(name)
注意:需确保虚拟仓库已在GCP控制台或通过API配置了需要聚合的上游仓库,否则FULL视图只会返回虚拟仓库自身的镜像。
内容的提问来源于stack exchange,提问作者Muad Mazahir
相关产品推荐
相关产品推荐

