Реестр контейнеров Azure - список изображений / тегов - программно

Я бьюсь головой о стену, пытаясь выяснить, как программным способом получить список образов в реестре контейнеров Azure.

Кажется, все сводится к поиску в Docker.DotNet собственного локального экземпляра списка изображений и отправке / извлечению в ACR через этот локальный репозиторий, но ничто не показывает мне, как получить список изображений (и их теги) из самого ACR. Если копаться в их API отдыха для лазурного, похоже, что доступен лишь небольшой набор опций «управления» (получение списка ACR, получение свойств ACR, но ничто не показывает мне, что он погружается глубже).

Я могу получить список имен изображений, а затем их теги имен изображений через Azure CLI - но я хочу получить перечисляемый список изображений в приложении C # (внутри веб-api , фактически).

По сути - то, что я хочу сделать, это иметь список запущенных образов удаленно, в докере - и сравнить те с тем, что происходит в ACR, чтобы сказать: «Эй, есть более новая версия этого образа. доступный".

Кто-нибудь это делал? К какому-либо эффекту?

Это просто так (для Docker):

    var _credentials = new BasicAuthCredentials("MY_REG_USERNAME", "MY_REG_PASSWORD");
    var _config = new DockerClientConfiguration(new Uri("MY_REGISTRY_NAME.azurecr.io"), _credentials);
    DockerClient _client = _config.CreateClient();

    var myList = await _client.Images.ListImagesAsync(
             new Docker.DotNet.Models.ImagesListParameters() { All = true }
     );

или невозможно?

Я возился с концентраторами Интернета вещей и получением двойных списков устройств и т.п. с помощью DeviceClient - разве нет ничего подобного для ACR?


person Jason Gross    schedule 18.03.2018    source источник
comment
Не могли бы вы сослаться на эту документацию от Microsoft, github.com/Azure -Samples /   -  person Amal Dev    schedule 03.04.2018
comment
Это не соответствует тому, о чем я просил. Он демонстрирует перечисление изображений в локальном экземпляре докера и отправку их в ACR, но там ничего не позволяет вам выполнять итерацию самого ACR. Я хочу знать изображение / теги в ACR, а не в локальном Docker.   -  person Jason Gross    schedule 10.04.2018
comment
Вы нашли решение этого? Я тоже бьюсь головой об стену за это ...   -  person Steve0212    schedule 02.05.2018


Ответы (2)


Некоторое время я сталкивался с той же загадкой, и ответ был таков:

Для операций с изображениями (включая список тегов, о котором вы спрашивали) Microsoft поддерживает Docker Registry API v2.

https://docs.docker.com/registry/spec/api

Что это значит? Пример:

API REST Azure предназначен только для операций с ресурсами Azure. Там вы можете использовать аутентификацию Bearer Token и, например, сделать запрос GET следующим образом:

https://management.azure.com/subscriptions/%3CSubscriptionGUID%3E/resourceGroups/ContainerRegistry/providers/Microsoft.ContainerRegistry/registries/YourRegistryName?api-version=2017-10-01

Но, как вы уже знаете, это не даст вам доступа к операциям с содержимым ACR.

Вместо этого вам нужно вызвать другую конечную точку, а именно конечную точку реестра, и, что очень важно, вам необходимо использовать базовую аутентификацию с именем пользователя и паролем:

https://yourregistry-on.azurecr.io/v2/%3Cimagename%3E/tags/list

Какой это логин и пароль? Что ж, возможны 2 типа:

  1. Пользователь-администратор, которого можно включить в ACR на портале Azure.
  2. Вы можете настроить пользователей в ACR в разделе «Контроль доступа» с различными типами доступа (более безопасными). В качестве имени пользователя можно использовать базовый идентификатор GUID, который отображается в строке запроса в URL-адресе при его выборе на портале Azure. Там же можно настроить пароль / ключ.
person Provanguard    schedule 14.05.2018

Вы можете использовать URL https://myregistry.azurecr.io/v2/_catalog с базовой аутентификацией. . Чтобы получить имя пользователя и пароль для базовой аутентификации, используйте команду ниже из Powershell.

az acr credential show --name myregistry

person Nitin Jenekar    schedule 12.01.2020