Использование сторонних реестров контейнеров

Интерфейс командной строки разработчика Azure (azd) поддерживает внешние сторонние реестры контейнеров для развертывания. Чтобы использовать эту возможность, перед вызовом команды azd deploy необходимо вручную выполнить аутентификацию во внешнем реестре контейнеров.

Аутентификация с использованием Docker требуется только тогда, когда azd выполняет за вас операции с образами, такие как загрузка, сборка, добавление тегов или отправка образов. Если служба настроена с использованием services.<name>.docker.imagePassthrough: true, azd повторно использует указанный удалённый образ без изменений. В этом случае azd не требуется Docker или Podman и не выполняет никаких действий по проверке подлинности реестра или жизненному циклу образов для этой службы.

Проверка подлинности

Запустите docker login и выполните проверку подлинности во внешнем реестре контейнеров. Вам может потребоваться выполнить дополнительные действия по установке или настройке для конкретного поставщика реестра.

docker login <your-registry>

Пример сценариев

Вы можете настроить azd для отправки и извлечения образов из внешнего реестра контейнеров в файле azure.yaml шаблона. Поддержка дополнительных реестров контейнеров обеспечивает большую гибкость для рабочих процессов развертывания.

Извлечение из внешнего реестра контейнеров

В этом примере во время azd развертывания контейнер извлекается из docker.io/username/nginx:latest, и служба контейнерных приложений ссылается на него напрямую.

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: docker.io/<username>/nginx:latest
    host: containerapp

Примечание.

Конфигурация инфраструктуры Container Apps должна включать учетные данные для получения образов из закрытых реестров контейнеров.

Чтобы развернуть удаленный образ, не требуя Docker или Podman, задайте services.<name>.docker.imagePassthrough: true и укажите полный образ, включая реестр, в services.<name>.image:

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: docker.io/<username>/nginx:latest
    host: containerapp
    docker:
      imagePassthrough: true

imagePassthrough имеет следующие ограничения:

  • Требуется задать services.<name>.image.
  • Его нельзя сочетать с docker.remoteBuild.
  • Эта служба не поддерживает флаги переопределения образа azd publish, --from-package и --to.

Извлечь, пометить тегом и отправить во внешний реестр

Рассмотрим файл со следующей azure.yaml конфигурацией:

# azure.yaml

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: nginx
    host: containerapp
    docker:
      registry: docker.io/<username>
      image: nginx
      tag: latest   

Команда azd deploy извлекает настроенный образ nginx. В этом случае это общедоступный образ в центре docker, поэтому azd перетагирует контейнер или образ и отправляет его в реестр Docker.

Сборка, тег и отправка во внешний реестр в azd deploy

Рассмотрим файл со следующей azure.yaml конфигурацией:

# azure.yaml

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  api:
    project: ./src/api
    host: containerapp
    docker:
      registry: docker.io/<username>
      image: todo-api

Команда azd deploy создает контейнер, тегирует его и отправляет его в реестр Docker.