Google Container注册表的gCloud API是什么 [英] What is the gcloud API for the Google Container Registry
本文介绍了Google Container注册表的gCloud API是什么的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我必须列出某个项目中发布的Docker容器镜像,但使用gcloud
CLI工具找不到合适的接口。这可能吗?
是否有其他解决方案可以在我的Google项目中列出此私有容器注册表中的容器图像?
推荐答案
您可以使用"gCloud docker Search<;host name&>/<;Your-project-id>;"列出图片。主机名应该是"gcr.io"、"us.gcr.io"或任何创建映像的名称。请注意,您必须迭代通过所有可能的主机,以找到项目下的所有图像。但是,此方法仅列出存储库,不会列出标记或清单。
您也可以直接使用注册表API来执行此操作,它将返回更多信息。使用以下脚本作为入门指南:
#!/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
这篇关于Google Container注册表的gCloud API是什么的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文