#azure #command-line-interface #sh
#azure #интерфейс командной строки #sh
Вопрос:
У меня есть два запроса azure CLI.
az acr repository list
чтобы получить список репозиториев в моем реестре контейнеров
az acr repository show-tags
для получения тега версии для каждого из репозиториев, возвращенных первым запросом
Это приводит к первоначальному вызову для извлечения списка, а затем к 1 вызову для каждого возвращенного репозитория. Есть ли альтернатива, которая позволила бы сократить количество требуемых вызовов до одного? Извлечение списка репозиториев и их версии за один раз.
команде show-tags требуется параметр репозитория, который является обязательным, и я не знаю ни о каких других командах, которые возвращали бы нужную мне информацию.
Ответ №1:
На данный момент невозможно выполнить это за один вызов.
Как кто-то уже упоминал, наименьший шаг вызова — создать скрипт для получения всех репозиториев (сохранить репозитории в переменной), затем в цикле использовать az acr repository show-tags
для получения их тегов.
Те же скрипты, что и blow:
result="$(az acr repository list -n ACR_name --output tsv)"
for i in $result; do az acr repository show-tags -n ACR_name --repository $i; done
Результат теста, как показано ниже:
Комментарии:
1. Именно этим я сейчас и занимаюсь, спасибо за подтверждение 🙂
Ответ №2:
AFAIK в настоящее время нет альтернативы, которая могла бы получить список репозиториев и их версий за один раз. Я рекомендую поделиться этим отзывом, разместив его здесь -> https://feedback.azure.com/forums/903958-azure-container-registry
Просто предложение, о котором вы, возможно, уже знаете, заключается в том, что на данный момент в качестве обходного пути вы можете разработать небольшой скрипт для извлечения всех репозиториев с помощью команды list и последовательно вводить каждое имя репозитория одно за другим в качестве входных данных в команду show tags и объединять выходные данные всех репозиториев.
Надеюсь, это поможет!!
Ответ №3:
Чтобы получить список полных имен изображений, с которыми вы можете использовать docker pull
, выполните это:
export REGISTRY=mycontainerregistry
#!/bin/bash
mycontainers=$(az acr repository list --name $REGISTRY --output tsv)
for i in $mycontainers
do
echo -n "$REGISTRY.azurecr.io/$i:"
az acr repository show-tags -n $REGISTRY --repository $i --output tsv|tail -1
done
Ответ №4:
Я попробовал приведенный выше скрипт, опубликованный bbaassssiiee
, и, похоже, он работает для извлечения только последних изображений. Если вы хотите сгенерировать список ВСЕХ изображений в репозитории, используя IMAGE_REPO:TAG
формат, я создал следующий скрипт bash, аналогичный приведенному выше, чтобы сделать именно это:
#!/bin/bash
registry_name='REGISTRY_NAME'
destination='LOCATION_TO_STORE_LIST'
az acr login --name $registry_name
touch $destination
repos="$(az acr repository list -n $registry_name --output tsv)"
for i in $repos; do
images="$(az acr repository show-tags -n $registry_name --repository $i --output tsv --orderby time_desc)"
for j in $images; do
echo $i":"$j >> $destination;
done;
done;
Единственными переменными, которые вам нужно установить, являются registry_name
и destination
для сохранения списка. Я хотел немного очистить наш реестр контейнеров, потому что там много неиспользуемых изображений, поэтому идея заключалась в том, чтобы определить, какие изображения нам нужно сохранить из списка, удалить их, а затем создать скрипт для запуска az acr repository delete
с оставшимися изображениями, чтобы очистить реестр и уменьшить объем хранилища, которое мы используем для реестра контейнеров, чтобы избежать ненужных затрат.