Основные сведения об обновлениях базовых образов для службы "Задачи Реестра контейнеров Azure"

В этой статье в общих чертах рассказывается об обновлениях базовых образов приложений и о том, как при таких обновлениях запускать задачу Реестра контейнеров Azure.

Что представляют собой базовые образы?

В файлах Dockerfile, определяющих большинство образов контейнеров, указан родительский образ, на котором основаны другие образы и который часто называют базовым образом. Базовые образы обычно содержат операционную систему, например Alpine Linux или Windows Nano Server, к которой применяются остальные слои контейнера. Они также могут включать в себя платформы приложений, например Node.js или .NET Core. Эти базовые образы обычно создают на основе общедоступных вышестоящих образов. Несколько образов вашего приложения могут совместно использовать общий базовый образ.

Разработчик образов часто обновляет базовый образ, чтобы включить новые функции или улучшения в ОС или платформу в образе. Исправления безопасности — еще одна распространенная причина обновления базового образа. При обновлении этих вышестоящих образов необходимо также обновить базовые образы, чтобы включить в них критические исправления. Затем необходимо повторно выполнить сборку каждого образа приложения, чтобы внести эти вышестоящие исправления, внесенные в базовый образ.

В некоторых случаях, например в частной группе разработки, в базовом образе могут быть указаны не только ОС или платформа. Например, базовый образ может представлять собой образ компонента общей службы, который необходимо отслеживать. Участникам команды может потребоваться отслеживать этот базовый образ для тестирования или регулярно обновлять его при разработке образов приложений.

Обслуживание копий базовых образов

Рекомендуется копировать любое содержимое в ваших реестрах, которое зависит от базового содержимого, обслуживаемого в общедоступном реестре, например в Docker Hub, в реестр контейнеров Azure или в другой частный реестр. Далее убедитесь, что вы создаете образы приложений, ссылаясь на частные базовые образы. Реестр контейнеров Azure позволяет импортировать образы, что упрощает копирование содержимого из общедоступных реестров или других реестров контейнеров Azure. В следующем разделе рассказывается, как с помощью службы "Задачи Реестра контейнеров Azure" отслеживать обновления базовых образов при создании обновлений приложений. Вы можете отслеживать обновления базовых образов в ваших собственных реестрах контейнеров Azure, а также (при необходимости) в вышестоящих общедоступных реестрах.

Отслеживание обновлений базовых образов

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

При сборке образов контейнеров служба "Задачи Реестра контейнеров Azure" динамически обнаруживает зависимости базовых образов. В результате оно может определить, обновлен ли базовый образ образа приложения. С помощью одной предварительно настроенной задачи сборки задачи ACR можно автоматически перестроить каждый образ приложения, ссылающийся на базовый образ. Благодаря такому автоматическому обнаружению и повторному выполнению сборок служба "Задачи ACR" экономит время и усилия, необходимые для того, чтобы вручную отслеживать и обновлять каждый образ приложения, ссылающийся на обновленный базовый образ.

Расположения базовых образов

При использовании сборок образов из Dockerfile задача ACR обнаружит зависимости базовых образов в следующих расположениях:

  • реестр контейнеров Azure, в котором выполняется задача;
  • другой частный реестр контейнеров Azure в том же или другом регионе;
  • общедоступный репозиторий в Docker Hub;
  • общедоступный репозиторий в Реестре контейнеров Azure.

Если базовый образ, указанный в инструкции FROM, находится в одном из этих расположений, задача Реестра контейнеров Azure добавляет обработчик, чтобы система выполняла повторную сборку образа при каждом обновлении базового образа.

Уведомления базовых образов

Время между обновлением базового образа и запуском зависимой от него задачи зависит от расположения базового образа.

  • Базовые образы из общедоступного репозитория в Docker Hub или MCR: для базовых образов в общедоступных репозиториях задача Реестра контейнеров Azure проверяет наличие обновлений образа через случайные интервалы времени в диапазоне от 10 до 60 минут. Зависимые задачи запускаются соответствующим образом.
  • Базовые образы из Реестра контейнеров Azure: при обновлении базового образа в Реестрах контейнеров Azure немедленно запускается связанная с ним задача Реестра контейнеров Azure. Базовый образ может находиться в том же Реестре контейнеров Azure, в котором выполняется задача, либо в другом Реестре контейнеров Azure в любом регионе.

Дополнительные рекомендации

  • Базовые образы для образов приложений: в настоящее время задача Реестра контейнеров Azure отслеживает только обновления базовых образов для образов приложений (среды выполнения). Они не отслеживают обновления базового образа для промежуточных образов (время сборки), которые используются в многоэтапных файлах Dockerfile.

  • Включено по умолчанию: если вы создадите задачу Реестра контейнеров Azure с помощью команды az acr task create, то по умолчанию для этой задачи будет включена функция запуска при обновлении базового образа. То есть свойству base-image-trigger-enabled присвоено значение "True". Если нужно отключить это поведение в задаче, измените свойство на "False". Например, выполните следующую команду az acr task update:

    az acr task update --registry myregistry --name mytask --base-image-trigger-enabled False
    
  • Запуск для отслеживания зависимостей: чтобы включить для задачи Реестра контейнеров Azure функцию определения и отслеживания зависимостей образа контейнера, в том числе для ее базового образа, необходимо хотя бы один раз запустить задачу, чтобы она выполнила сборку образа. Например, запустите задачу вручную с помощью команды az acr task run.

  • Стабильный тег для базового образа: чтобы задача запускалась при обновлении базового образа, у базового образа должен быть стабильный тег, например node:9-alpine. Эта расстановка тегов типична для базового образа, который обновляется с помощью исправлений платформы и ОС до последней стабильной версии. Если базовый образ обновляется с помощью нового тега версии, он не запускает задачу. Подробнее о добавлении тегов к образам см. Расстановка тегов в Docker: рекомендации для расстановки тегов и управления версиями образов Docker.

  • Другие триггеры задач: в задаче, запускаемой при обновлениях базового образа, вы также можете включить триггеры, срабатывающие при фиксации исходного кода или по расписанию. Кроме того, при обновлении базового образа можно запускать многошаговую задачу.

Следующие шаги

В указанных ниже учебниках имеются сценарии автоматизации сборки образов приложений после обновлений базовых образов.