1
我必須列出在特定項目中發佈的Docker容器圖像,但我找不到使用gcloud
CLI工具的適當API。這可能嗎?什麼是谷歌容器註冊表的gcloud API
是否有任何其他解決方案在我的Google項目中列出此私有容器註冊表中的容器圖像?
我必須列出在特定項目中發佈的Docker容器圖像,但我找不到使用gcloud
CLI工具的適當API。這可能嗎?什麼是谷歌容器註冊表的gcloud API
是否有任何其他解決方案在我的Google項目中列出此私有容器註冊表中的容器圖像?
您可以使用「gcloud docker search <hostname>/< 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
您提到「註冊表API」。你的意思是什麼?你有鏈接嗎? –
https://docs.docker.com/registry/spec/api/。 Google容器註冊表實現了相同的其他API,但擴展了列表圖像標記API,因此它返回了上面鏈接定義的超級信息集,這就是爲什麼您可以遞歸列出圖像的原因。 – Wei
我還沒有嘗試過你的腳本,如果這是顯而易見的,我提前道歉,但爲了讓搜索工作,我不得不這樣做:「gcloud docker - 搜索/」 –