Поделиться через


Использование Docker YAML для сборки и отправки образов Docker в Реестр контейнеров Azure

Azure DevOps Services

В этом руководстве показано, как использовать конвейер на основе шаблона Docker Azure Pipelines для создания контейнерного приложения и отправки его в Реестр контейнеров Azure. Шаблон настраивает конвейер YAML непрерывной интеграции, в котором изменения нового репозитория кода активируют конвейер для создания и публикации обновленных образов Docker в реестре.

Конвейер шаблона контейнера Docker использует агенты, размещенные корпорацией Майкрософт, и создает подключение службы на основе субъекта-службы к Реестр контейнеров Azure. Для конвейера, который выполняет аналогичный процесс с помощью локальных агентов и подключения к службе, которое вы создаёте самостоятельно, см. статью «Сборка и отправка образов Docker в Реестр контейнеров Azure».

Предварительные требования

  • Учетная запись Azure, в которой у вас есть разрешение на создание и настройку ресурсов. Если у вас нет учетной записи Azure, зарегистрируйтесь для получения бесплатной учетной записи.

  • Организация и проект Azure DevOps, где у вас есть разрешение на создание конвейеров и развертывание приложений. Сведения о создании организации или проекта см. в статье "Создание новой организации " или "Создание проекта" в Azure DevOps.

  • Учетная запись GitHub.

    Внимание

    При использовании GitHub в следующих процедурах может потребоваться создать подключение службы GitHub, войти в GitHub, пройти проверку подлинности в организациях GitHub, установить Azure Pipelines или авторизовать Azure Pipelines. Следуйте инструкциям на экране, чтобы завершить процесс. Дополнительные сведения см. в разделе Доступ к репозиториям GitHub.

Получение примера приложения

В GitHub форкните или клонируйте репозиторий образец приложения Docker и Kubernetes на Node.JS.

Создание реестра контейнеров

  1. Из портала Azure войдите в Azure Cloud Shell, выбрав значок на верхней панели меню. Обязательно используйте оболочку Bash .

    Кнопка Azure Cloud Shell

  2. В Cloud Shell выполните следующие команды, чтобы создать группу ресурсов и реестр контейнеров Azure с помощью Azure CLI. Имя реестра контейнеров должно быть в нижнем регистре.

    az group create --name myapp-rg --location eastus
    az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
    
  3. Чтобы развернуть образ Docker в реестре контейнеров Azure, необходимо включить учетную запись администратора реестра, так как она отключена по умолчанию. Чтобы включить пользователя администратора для реестра, используйте --admin-enabled параметр с командой az acr update . Дополнительные сведения и инструкции см. в разделе "Учетная запись администратора".

    az acr update -n <acrName> --admin-enabled true
    

Кроме того, можно использовать пользовательский интерфейс портал Azure для создания реестра контейнеров Azure. Инструкции см. в разделе "Создание реестра контейнеров". Включите учетную запись администратора в свойствах после создания реестра.

Создание конвейера

  1. В вашем проекте Azure DevOps выберите конвейеры>Новый конвейер, или Создать конвейер, если этот конвейер является первым в проекте.

    Снимок экрана, показывающий экран создания нового конвейера.

  2. Выберите GitHub в качестве расположения исходного кода.

  3. На экране "Выбор репозитория" выберите репозиторий с примерами кода.

  4. На экране "Настройка конвейера" выберите Docker: сборка и отправка образа в Реестр контейнеров Azure конвейер.

    Снимок экрана, показывающий выбор конвейера для сборки и отправки образа Docker в Реестр контейнеров Azure.

  5. На экране Docker выберите подписку Azure и нажмите кнопку "Продолжить".

  6. Выберите реестр контейнеров в раскрывающемся меню, укажите имя образа, а затем выберите "Проверить и настроить".

    Снимок экрана: настройка конвейера Docker для сборки и публикации образа в Реестр контейнеров Azure.

    Azure Pipelines создает файл azure-pipelines.yml , определяющий конвейер.

  7. Просмотрите код в azure-pipelines.yml, а затем нажмите кнопку "Сохранить и запустить".

    Снимок экрана: кнопка

  8. При необходимости измените сообщение коммита и укажите описание. Затем нажмите кнопку "Сохранить и снова запустить ", чтобы зафиксировать файл azure-pipelines.yml в репозиторий и запустить сборку.

  9. На странице выполнения сборки отображаются сведения о сборке и ходе выполнения. Чтобы просмотреть конвейер в действии, выберите " Сборка " в разделе "Задания".

    Снимок экрана: ссылка на сборку на странице запуска задания.

Сведения о конвейере

Конвейер создается из шаблона контейнера Docker. Этап сборки использует задачу Docker версии 2 для сборки и отправки образа Docker в реестр контейнеров.

Задача Docker использует подключение службы реестра Docker с аутентификацией через служебный принципал, чтобы ваш конвейер мог отправлять образы в реестр контейнеров. Шаблон контейнера Docker создает это подключение к службе при создании конвейера.

- stage: Build
  displayName: Build and push stage
  jobs:  
  - job: Build
    displayName: Build job
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: Docker@2
      displayName: Build and push an image to container registry
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerRegistryServiceConnection)
        tags: |
          $(tag)

Очистка ресурсов

Завершив использование ресурсов, созданных в этом руководстве, их можно удалить, чтобы избежать дополнительных расходов. Выполните следующую команду Cloud Shell, чтобы удалить группу ресурсов и все ресурсы в ней.

az group delete --name myapp-rg