首页 > 解决方案 > 防止 Google Container Registry 保留“被覆盖”的图像

问题描述

当我推送一个覆盖现有图像(相同名称和标签)的新图像时,前一个图像只是从其标签中删除并保留在存储库中。

图像

有没有办法配置gcr或我的 docker 命令不保留过期的图像?我可以查询没有标签的图像并手动删除它们,但这似乎很荒谬。

我推送图像的代码:

export GCLOUD_PROJECT="..."
gcloud auth activate-service-account --key-file gcloud-api-key.json
gcloud config set project $GCLOUD_PROJECT
gcloud auth configure-docker --quiet
docker build -t my_image .
docker tag my_image asia.gcr.io/$GCLOUD_PROJECT/my_image:dev
docker push asia.gcr.io/$GCLOUD_PROJECT/my_image:dev

标签: dockergcloudgoogle-container-registry

解决方案


不幸的是,当您推送具有相同标签的新 docker 映像时,GCR 不会自动删除。另一方面,谷歌提供了 API 来自动化它,你可以通过添加删除命令来改变你的脚本:

export GCLOUD_PROJECT="..."
gcloud auth activate-service-account --key-file gcloud-api-key.json
gcloud config set project $GCLOUD_PROJECT
gcloud auth configure-docker --quiet
docker build -t my_image .
docker tag my_image asia.gcr.io/$GCLOUD_PROJECT/my_image:dev

# here delete the image
gcloud container images delete asia.gcr.io/$GCLOUD_PROJECT/my_image:dev

# now push the new one
docker push asia.gcr.io/$GCLOUD_PROJECT/my_image:dev

您可以在 google GCR 文档https://cloud.google.com/container-registry/docs/managing#deleting_images中找到更好的信息。


推荐阅读