docker - 如何测试 gcr.io 中是否已存在 docker 镜像的特定标签?

标签 docker gcloud google-kubernetes-engine google-container-registry

我在 gcr.io 中注意到,当我推送带有特定标签的 docker 镜像时:

gcr.io/myproject/myimage:mytag

如果该图像/标签组合已存在,则似乎会取消原始图像的标签,上传新图像,然后将标签应用到新图像。

这导致我的存储库因同一图像的许多未标记版本而变得臃肿。

如何测试图像/标签组合是否已存在于 gcr.io 中,以便我仅在需要时推送?

最佳答案

这是我在 shell 脚本中解决这个问题的方法

existing_tags=$(gcloud container images list-tags --filter="tags:mytag" --format=json gcr.io/myproject/myimage)

if [[ "$existing_tags" == "[]" ]]; then
  printf "tag does not exist"
else
  printf "tag exists"
fi

说明

我正在使用 gcloud 容器镜像列表标签 ( documentation here )

  • 并使用 --filter 标志过滤与 mytag 匹配的标签

  • 并使用 --format=json 格式化为 JSON

本质上,如果标签 mytag 不存在,则其输出将是一个空数组 [],否则,它确实存在。您可以通过脚本中的字符串比较来测试这一点,然后进行相应的操作。

关于docker - 如何测试 gcr.io 中是否已存在 docker 镜像的特定标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55343134/

相关文章:

python - bigquery 的意外关键字参数 'type'

django - 操作系统错误 : [Errno 99] Address not available - sending e-mail from django docker app with gmail smtp

bash - 无法捕获 `/bin/sh`的退出代码

google-cloud-platform - Google Cloud Dataproc Serverless gcloud ttl 标志无法识别的参数

google-kubernetes-engine - 如何确定gke集群是否设置了自动升级

docker - 使 Kubernetes 服务可从外部访问

google-app-engine - 将 App Engine 上的应用连接到 GKE 上运行的集群

kubernetes - 1.9.6-gke.1中的GKE导出网络到GCE实例

python - celery worker 无法连接到 docker 实例上的 redis

docker - 如何在具有 Ubuntu 12.04 的 32 位机器上安装 Docker?