【问题标题】:How Would I List All Google Container Registry Hostnames with the Cloud SDK?如何使用 Cloud SDK 列出所有 Google Container Registry 主机名?
【发布时间】:2022-01-26 19:14:45
【问题描述】:
如何使用 Cloud SDK (gcloud) 列出在给定 Google Cloud Platform (GCP) 项目中找到的所有不同 Google Container Registry (GCR) 主机名?
即,我如何列出 GCP 项目 $GCP_PROJECT_ID 的所有不同 GCR 主机名(例如,gcr.io、us.gcr.io 等)?
【问题讨论】:
标签:
docker
google-cloud-platform
gcloud
google-container-registry
【解决方案1】:
您无法在images 子组下使用list 命令[并且可能应用过滤器或转换],因为它仅列出gcr.io 主机名下的存储库:
gcloud container images list
#=>
gcr.io/$GCP_PROJECT_ID/. . .
. . .
Only listing images in gcr.io/$GCP_PROJECT_ID. Use --repository to list images in other repositories.
尝试应用通配符 (*) 会产生以下不利结果:
-
gcloud container images list --repository="*.gcr.io"
#=>
ERROR: (gcloud.container.images.list) A Docker registry domain must be specified.
-
gcloud container images list --repository="*.gcr.io/*"
#=>
ERROR: (gcloud.container.images.list) Invalid repository: *, must be at least 2 characters
-
gcloud container images list --repository="*.gcr.io/**"
#=>
ERROR: (gcloud.container.images.list) Invalid repository: **, acceptable characters include: abcdefghijklmnopqrstuvwxyz0123456789_-./
-
gcloud container images list --repository="*.gcr.io/$GCP_PROJECT_ID"
#=>
ERROR: (gcloud.container.images.list) *.gcr.io/$GCP_PROJECT_ID is not in a supported registry. Supported registries are ['gcr.io', 'us.gcr.io', . . ., 'mirror.gcr.io', 'k8s.gcr.io']
尝试对services 组使用list 命令:
gcloud services list \
--filter="name=projects/$GCP_PROJECT_NUMBER/services/containerregistry.googleapis.com" \
--format=yaml \
--project=$GCP_PROJECT_ID
或asset 组的search-all-resources 命令:
gcloud asset search-all-resources \
--format=yaml \
--filter="name=//serviceusage.googleapis.com/projects/$GCP_PROJECT_NUMBER/services/containerregistry.googleapis.com" \
--scope=projects/$GCP_PROJECT_ID
也不透露任何有关活动主机名的信息。
唯一的解决方案似乎是将list 命令的输出与asset 组通过管道传送到uniq:
gcloud asset list \
--filter="assetType=containerregistry.googleapis.com/Image" \
--format="value(name.split('/').slice(3, 4))" \
--project=$GCP_PROJECT_ID | uniq
#=>
gcr.io
us.gcr.io
. . .
mirror.gcr.io
k8s.gcr.io