如何使用 Cloud SDK 列出所有 Google 个 Container Registry 主机名?
How Would I List All Google Container Registry Hostnames with the Cloud SDK?
如何使用 Cloud SDK (gcloud
) 列出在给定 Google 云平台 (GCP) 项目中找到的所有不同 Google 容器注册表 (GCR) 主机名?
即,我如何列出 GCP 项目 $GCP_PROJECT_ID
的所有不同 GCR 主机名(例如,gcr.io
、us.gcr.io
等)?
您无法在 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
也不会泄露有关活动主机名的任何信息。
唯一的解决方案似乎是将针对asset
组的list
命令的输出通过管道传输到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
如何使用 Cloud SDK (gcloud
) 列出在给定 Google 云平台 (GCP) 项目中找到的所有不同 Google 容器注册表 (GCR) 主机名?
即,我如何列出 GCP 项目 $GCP_PROJECT_ID
的所有不同 GCR 主机名(例如,gcr.io
、us.gcr.io
等)?
您无法在 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
也不会泄露有关活动主机名的任何信息。
唯一的解决方案似乎是将针对asset
组的list
命令的输出通过管道传输到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