Что такое API gcloud для реестра контейнеров Google?
Мне нужно перечислить изображения контейнера Docker, опубликованные в определенном проекте, но я не могу найти подходящий API, используя gcloud
Инструмент CLI. Это возможно?
Есть ли какое-либо другое решение для отображения изображений контейнеров из этого личного реестра контейнеров в моем проекте Google?
1 ответ
Вы можете использовать "gcloud docker search
Вы также можете напрямую использовать 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
Используйте команду "gcloud container images" для поиска и взаимодействия с изображениями в реестре контейнеров Google. Например, это будет список всех контейнеров в проекте под названием "my-project":
gcloud container images list --repository=gcr.io/my-project
Полная документация находится по адресу https://cloud.google.com/container-registry/docs/managing