You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GCP中列出并删除90天以上的镜像?

删除GCP项目中90天以上镜像的最佳方法

方法一:gcloud命令行手动清理(一次性操作)

这是最直接的方式,适合临时清理需求。

针对Compute Engine镜像

  1. 先列出所有超过90天的镜像,确认目标列表:
gcloud compute images list --filter="creationTimestamp < $(date -d '-90 days' +%Y-%m-%dT%H:%M:%SZ)" --format="value(name)"

通过creationTimestamp过滤创建时间早于90天的镜像,date命令生成GCP兼容的UTC时间戳。

  1. 确认列表无误后,批量删除:
gcloud compute images delete $(gcloud compute images list --filter="creationTimestamp < $(date -d '-90 days' +%Y-%m-%dT%H:%M:%SZ)" --format="value(name)")

镜像数量极多时可加--quiet参数跳过确认,但建议先手动核对列表再执行。

针对Artifact Registry/Container Registry容器镜像

  1. 列出90天以上的容器镜像:
gcloud artifacts docker images list [REGISTRY_LOCATION]-docker.pkg.dev/[PROJECT_ID]/[REPOSITORY] --filter="updateTime < $(date -d '-90 days' +%Y-%m-%dT%H:%M:%SZ)" --format="value(IMAGE_PATH)"

替换[REGISTRY_LOCATION]、[PROJECT_ID]、[REPOSITORY]为实际信息。

  1. 批量删除(含标签):
gcloud artifacts docker images delete $(gcloud artifacts docker images list [REGISTRY_LOCATION]-docker.pkg.dev/[PROJECT_ID]/[REPOSITORY] --filter="updateTime < $(date -d '-90 days' +%Y-%m-%dT%H:%M:%SZ)" --format="value(IMAGE_PATH)") --delete-tags

方法二:Cloud Functions自动化清理(长期维护)

如果需要定期自动清理,推荐用Cloud Functions+Cloud Scheduler组合:

  1. 编写清理函数(以Python为例):
import os
from datetime import datetime, timedelta
from google.cloud import compute_v1

def delete_old_images(event, context):
    project_id = os.environ.get('PROJECT_ID')
    image_client = compute_v1.ImagesClient()
    
    # 计算90天前的UTC时间戳
    cutoff_time = (datetime.utcnow() - timedelta(days=90)).isoformat() + 'Z'
    
    # 筛选旧镜像
    images = image_client.list(project=project_id)
    old_images = [img.name for img in images if img.creation_timestamp < cutoff_time]
    
    # 批量删除
    for img_name in old_images:
        try:
            image_client.delete(project=project_id, image=img_name)
            print(f"Deleted image: {img_name}")
        except Exception as e:
            print(f"Failed to delete {img_name}: {str(e)}")
  1. 部署函数到Cloud Functions,设置环境变量PROJECT_ID为你的项目ID,赋予函数compute.images.delete权限。

  2. 创建Cloud Scheduler任务,设置每周/每月触发该函数,实现自动清理。

方法三:Artifact Registry生命周期规则(无代码自动化)

仅适用于Artifact Registry的容器镜像,无需编写代码即可自动清理:

  • 进入GCP控制台的Artifact Registry,选择目标仓库。
  • 点击「生命周期规则」→「添加规则」。
  • 配置规则:选择「删除旧版本」,设置「版本年龄」为90天,保存后规则自动生效。

注意事项

  • 操作前务必确认镜像未被实例模板、磁盘或运行中实例依赖,可通过gcloud compute images describe [IMAGE_NAME] --format="value(usedBy)"检查。
  • 确保操作账号拥有对应权限:Compute Engine需compute.images.delete,Artifact Registry需artifacts.repositories.deleteArtifacts。

内容的提问来源于stack exchange,提问作者Pankaj K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 06:45:31