docker - 防止 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
解决方案
不幸的是,当您推送具有相同标签的新 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中找到更好的信息。
推荐阅读
- python - 无法从 Makefile 激活 python venv 环境
- ios - 在 ios Swift 中从 popUpVC 导航到 newVC
- spring-kafka - 寻找非阻塞spring kafka ErrorHandler
- sql - APEX: Submit without refreshing the page
- reactjs - How can I use two component with map in react-native
- http - 使用 UTLS 和 HTTP 1.1 请求时通过代理连接
- c++ - 链接到 Filament 预编译库时出现链接器错误
- python - tf.keras.layers.RNN 与 tf.keras.layers.StackedRNNCells:Tensorflow 2
- android - 在 Android 上查找作品文件
- macos - mac缓存是什么类型的文件?