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

Docker镜像反复出现在Container Registry与Cloud Storage的问题求助

问题分析与解决方案

这问题我之前帮同事排查过,确实和你没删除的Cloud Run服务直接相关!

为什么旧镜像会反复出现?

Cloud Run服务会持续保留对其部署时所用镜像的"硬引用"——哪怕你的服务处于闲置状态,为了保证它能随时被唤醒重启,Google Cloud的后台会自动维护这份镜像依赖。当你手动删除Container Registry里的镜像或Cloud Storage里的工件层后,Cloud Run的健康检测/资源保障机制会发现依赖缺失,进而自动从备份中恢复旧镜像及其关联层,这就是旧内容反复冒出来的原因。

永久删除的步骤

1. 先删除关联的Cloud Run服务

这是最关键的一步,必须先切断服务对旧镜像的引用:

  • 命令行方式:
    gcloud run services delete [你的服务名称] --region [服务所在区域]
    
  • 控制台方式:打开Cloud Run控制台,找到对应的闲置服务,点击右上角的删除按钮,确认操作即可。

注意:删除服务前请确认你不再需要它,删除后无法直接恢复;如果之后需要类似服务,可以用新镜像重新部署。

2. 彻底清理Container Registry中的旧镜像

现在服务引用已经切断,你可以安全删除旧镜像了:

  • 先列出目标镜像的所有版本:
    gcloud container images list-tags gcr.io/[你的项目ID]/[镜像名称]
    
  • 删除特定版本的镜像(替换[TAG]为旧版本的标签):
    gcloud container images delete gcr.io/[你的项目ID]/[镜像名称]:[TAG] --force-delete-tags
    
  • 如果要批量删除所有旧版本,可以结合通配符使用,比如删除所有非latest的版本:
    gcloud container images delete gcr.io/[你的项目ID]/[镜像名称]:* --filter="tags!=latest" --force-delete-tags
    

3. 清理Cloud Storage中的残留工件层

最后清理存储桶里的镜像层文件:

  • 找到对应的存储桶(默认是artifacts.[你的项目ID].appspot.com),进入containers/images目录,删除旧镜像对应的哈希文件夹;
  • 命令行方式:
    gsutil rm -r gs://artifacts.[你的项目ID].appspot.com/containers/images/[旧镜像哈希值]
    

后续注意事项

  • 以后要删除镜像前,务必先检查是否有任何Cloud Run、GKE、Cloud Functions等服务在引用它,避免出现自动恢复的情况;
  • 闲置的Cloud Run服务虽然不产生运行费用,但它的资源引用会一直存在,建议及时删除不再需要的服务,避免这类资源残留问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:17:28