Google Container Registry的gcloud API是什么?

我必须列出某个项目中发布的Docker容器镜像,但是我找不到使用gcloud CLI工具的合适的API。 这可能吗?

有没有其他解决scheme来列出我的Google项目中的私人容器registry的容器图像?

你可以使用“gcloud docker search <hostname> / <your-project-id>”列出图像。 主机名应该是“gcr.io”,或者“us.gcr.io”,或者你的图像是根据什么创build的。 请注意,您必须遍历所有可能的主机才能find项目下的所有图像。 但是,这种方法只列出仓库,不会列出标签或清单。

你也可以直接使用registryAPI来做到这一点,它会返回更多的信息。 使用下面的脚本作为起始指南:

 #!/bin/bash HOSTS="gcr.io us.gcr.io eu.gcr.io asia.gcr.io" PROJECT=your-project-id function search_gcr() { local fullpath="" local host=$1 local project=$2 if [[ -n $3 ]]; then fullpath=${3} fi local result=$(curl -u _token:$(gcloud auth print-access-token) \ --fail --silent --show-error \ https://${host}/v2/${project}${fullpath}/tags/list) if [[ -z $result ]]; then printf "" else printf $result fi } function recursive_search_gcr() { local host=$1 local project=$2 local repository=$3 local result=$(search_gcr $host $project ${repository}) local returnVal=$? if [[ -z $result ]]; then echo Not able to curl: https://${host}/v2/${project}${fullpath}/tags/list return fi local children="$(python - <<EOF import json import sys obj = json.loads('$result') if 'child' in obj: print ' '.join(obj['child']) else: print '' EOF )" for child in $children; do recursive_search_gcr $host $project ${repository}/${child} done local manifests="$(python - <<EOF import json import sys obj = json.loads('$result') if 'manifest' in obj: print ' '.join(obj['manifest']) else: print '' EOF )" echo Repository ${host}/${project}$repository: echo " manifests:" for manifest in $manifests do echo " "$manifest done echo local tags="$(python - <<EOF import json import sys obj = json.loads('$result') if 'tags' in obj: print ' '.join(obj['tags']) else: print '' EOF )" echo " tags:" for tag in $tags do echo " "$tag done echo } for HOST in $HOSTS; do recursive_search_gcr $HOST $PROJECT done