GCP Container Registry 发生 image tag 为空白的原因及列出空白 tag image 的方法

一般来说,如果是透过GCP官网的介绍方式,透过 docker 指令推送 image 到 GCP Contanier Registry 上,
如果未指定版号推送

$ docker push asia.gcr.io/xxxxxx/darwin-image-test
The push refers to repository [asia.gcr.io/xxxxxx/darwin-image-test]
a65ff0f5005b: Pushed 
2acf82036f38: Layer already exists 
9f65d1d4c869: Layer already exists 
0f804d36244d: Layer already exists 
9b23c8e1e6f9: Layer already exists 
ffd3d6313c9b: Layer already exists 
9eb82f04c782: Layer already exists 
latest: digest: sha256:xxxxxx size: 1777
2acf82036f38: Layer already exists 
9f65d1d4c869: Layer already exists 
0f804d36244d: Layer already exists 
9b23c8e1e6f9: Layer already exists 
ffd3d6313c9b: Layer already exists 
9eb82f04c782: Layer already exists 
v01: digest: sha256:xxxxxx: 1570

推送完 image 後,检查目前在 GCP Contanier Registry 上的 image 会自带 latest 的 tag

$ gcloud container images list-tags asia.gcr.io/xxxxxx/darwin-image-test
DIGEST        TAGS    TIMESTAMP
ce95dbb8bbb6  latest  2021-02-28T22:27:23
b08ecc9f7997  v01     2021-02-18T03:20:26

不过近日在接触某些专案时,看到以下的 image 清单:

$ gcloud container images list-tags asia.gcr.io/xxxxxx/darwin-image-test
DIGEST        TAGS    TIMESTAMP
04465a0bc048          2021-02-28T22:33:14
ce95dbb8bbb6  latest  2021-02-28T22:27:23
b08ecc9f7997  v01     2021-02-18T03:20:26

04465a0bc048 这个image id 的 tag 是『空白的』、『空白的』、『空白的』
/images/emoticon/emoticon04.gif/images/emoticon/emoticon04.gif/images/emoticon/emoticon04.gif
花惹发!正常 docker 推送不是会自带 latest 版号吗 ?/images/emoticon/emoticon19.gif


後来探究原因,造成这个现象发生的凶手就是直接在 gcloud 的路径下直接执行 gcloud 里面的 docker 推送所造成的 /images/emoticon/emoticon10.gif

$ /usr/local/bin/gcloud docker -- push asia.gcr.io/xxxxxx/darwin-image-test
WARNING: `gcloud docker` will not be supported for Docker client versions above 18.03.

As an alternative, use `gcloud auth configure-docker` to configure `docker` to
use `gcloud` as a credential helper, then use `docker` as you would for non-GCR
registries, e.g. `docker pull gcr.io/project-id/my-image`. Add
`--verbosity=error` to silence this warning: `gcloud docker
--verbosity=error -- pull gcr.io/project-id/my-image`.

See: https://cloud.google.com/container-registry/docs/support/deprecation-notices#gcloud-docker

The push refers to repository [asia.gcr.io/xxxxxx/darwin-image-test]
d8e9a7a6fa33: Pushed 
2acf82036f38: Layer already exists 
9f65d1d4c869: Layer already exists 
0f804d36244d: Layer already exists 
9b23c8e1e6f9: Layer already exists 
ffd3d6313c9b: Layer already exists 
9eb82f04c782: Layer already exists 
latest: digest: sha256:xxxxxx size: 1777

如何在 CGP Container Registry 上捞出这些没 tag 的 images 呢?
参考官网教学
https://ithelp.ithome.com.tw/upload/images/20210228/20109107kYNgKAHk1w.png

$ gcloud container images list-tags asia.gcr.io/xxxxxx/darwin-image-test --filter="NOT tags:*"
DIGEST        TAGS  TIMESTAMP
04465a0bc048          2021-02-28T22:33:14

在现今强调 CI/CD 的潮流下,不管是 docker registry、GitLab、资料库 ...
只要养成良好的习惯,其实可以避开相当多的问题。
以本文 docker image 为例:
『在推送image前,永远tag接上git版号 ,那麽一来再清docker registry时才不会犹豫不决。另外,即便是测试档也给一个特定的tag例如:test字样,让推上去的image永远迭代掉同一个档案,才不会三不五时就遇到空间爆掉的问题,甚至是看到恐怖的 GCP 使用帐单!
/images/emoticon/emoticon04.gif


<<:  使用 python ols 预测值

>>:  [DSA] - Basic ADT (Arrays, Linked List, Stack)

初学者跪着学JavaScript Day4 : 宣告:let、const

一日客家话:空心菜(客)风吹:vung coi ES6 之前没有 block 作用域概念是使用var...

模糊测试工具-zzuf

-图片来源:DO SON 为了准备测试数据以验证後端API是否暗示被测系统(SUT)是一个数据驱动...

Swift纯Code之旅 Day11. 「TableView(3) - 实作Delegate & DataSource」

前言 昨天已经将 addAlarmTableViewCell 在 addAlarmTableView...

客户抱怨 v.s. 客户开发

自从到了美国之後,原本预期要来好好开发海外市场的,果然事情没有这麽顺利,既有客户所遇到的 Bug 跟...

【文字分析】3-4 TF-IDF文字概念

【文字分析】3-4 TF-IDF文字概念 说明 一种分析某单词在文章中重要程度公式 TF-IDF值与...