Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье в общих чертах рассказывается об обновлениях базовых образов приложений и о том, как при таких обновлениях запускать задачу Реестра контейнеров Azure.
Что представляют собой базовые образы?
В файлах Dockerfile, определяющих большинство образов контейнеров, указан родительский образ, на котором основаны другие образы и который часто называют базовым образом. Базовые образы обычно содержат операционную систему, например Alpine Linux или Windows Nano Server, на которых применяются остальные слои контейнера. Они также могут включать в себя платформы приложений, например Node.js или .NET Core. Эти базовые образы обычно создают на основе общедоступных исходных образов. Несколько образов вашего приложения могут совместно использовать общий базовый образ.
Разработчик образов часто обновляет базовый образ, чтобы включить новые функции или улучшения в ОС или платформу в образе. Исправления безопасности — еще одна распространенная причина обновления базового образа. При появлении этих верхнеуровневых обновлений необходимо также обновить базовые образы, включив в них необходимые критические исправления. Затем необходимо повторно выполнить сборку каждого образа приложения, чтобы внести эти вышестоящие исправления, внесенные в базовый образ.
В некоторых случаях, например в частной группе разработки, в базовом образе могут быть указаны не только ОС или платформа. Например, базовый образ может представлять собой образ компонента общей службы, который необходимо отслеживать. Участникам команды может потребоваться отслеживать этот базовый образ для тестирования или регулярно обновлять его при разработке образов приложений.
Хранение копий базовых образов
Рекомендуется копировать любое содержимое в ваших реестрах, которое зависит от базового содержимого, обслуживаемого в общедоступном реестре, например в Docker Hub, в реестр контейнеров Azure или в другой частный реестр. Затем убедитесь, что вы создаете образы для приложений, ссылаясь на приватные базовые образы. Реестр контейнеров Azure позволяет импортировать образы, что упрощает копирование содержимого из общедоступных реестров или других реестров контейнеров Azure. В следующем разделе рассказывается, как с помощью службы "Задачи Реестра контейнеров Azure" отслеживать обновления базовых образов при создании обновлений приложений. Вы можете отслеживать обновления базовых образов в ваших собственных реестрах контейнеров Azure, а также (при необходимости) в вышестоящих общедоступных реестрах.
Отслеживайте обновления базовых образов
Решение "Задачи ACR" включают в себя возможность автоматически создавать образы при обновлении базового образа контейнера. Вы можете использовать эту возможность для обслуживания и обновления копий общедоступных базовых образов в ваших реестрах контейнеров Azure, а затем для повторного создания образов приложений, зависящих от базовых образов.
При создании образов контейнеров ACR Tasks динамически обнаруживает зависимости базовых образов. В результате оно может определить, обновлен ли базовый образ образа приложения. С помощью одной предварительно настроенной задачи сборки задачи ACR можно автоматически перестроить каждый образ приложения, ссылающийся на базовый образ. Благодаря такому автоматическому обнаружению и повторной сборке ACR Tasks экономит время и усилия, необходимые для того, чтобы вручную отслеживать и обновлять каждый образ приложения, ссылающийся на обновленный базовый образ.
Расположение базовых образов
При использовании сборок образов из Dockerfile задача ACR обнаружит зависимости базовых образов в следующих расположениях:
- реестр контейнеров Azure, в котором выполняется задача;
- другой частный реестр контейнеров Azure в том же или другом регионе;
- общедоступный репозиторий в Docker Hub;
- общедоступный репозиторий в Реестре контейнеров Azure.
Если базовый образ, указанный в инструкции FROM
, находится в одном из этих расположений, задача ACR добавляет обработчик, чтобы образ повторно собирался при каждом обновлении его базы.
Уведомления базовых образов
Время между обновлением базового образа и запуском зависимой от него задачи зависит от расположения базового образа.
- Базовые образы из общедоступного репозитория в Docker Hub или MCR: для базовых образов в общедоступных репозиториях задача Реестра контейнеров Azure проверяет наличие обновлений образа через случайные интервалы времени в диапазоне от 10 до 60 минут. Зависимые задачи выполняются соответствующим образом.
- Базовые образы из Реестра контейнеров Azure: при обновлении базового образа в реестре контейнеров Azure, задача ACR запускается немедленно. Базовый образ может находиться в том же Реестре контейнеров Azure, в котором выполняется задача, либо в другом Реестре контейнеров Azure в любом регионе.
Дополнительные рекомендации
Базовые образы для образов приложений — в настоящее время задача ACR (Реестра контейнеров Azure) отслеживает только обновления базовых образов для образов приложений (среды выполнения). Он не отслеживает обновления базовых образов для промежуточных (buildtime) образов, которые используются в многоэтапных Dockerfile.
Включено по умолчанию: если вы создаете задачу ACR с помощью команды 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
Запуск для отслеживания зависимостей: чтобы включить для задачи ACR функцию определения и отслеживания зависимостей образа контейнера, в том числе для его базового образа, необходимо запустить задачу хотя бы один раз, чтобы она выполнила сборку образа. Например, запустите задачу вручную с помощью команды az acr task run.
Стабильный тег для базового образа: чтобы задача запускалась при обновлении базового образа, у базового образа должен быть стабильный тег, например
node:9-alpine
. Эта расстановка тегов типична для базового образа, который обновляется с помощью исправлений платформы и ОС до последней стабильной версии. Если базовый образ обновляется с помощью нового тега версии, он не запускает задачу. Для получения дополнительной информации о добавлении тегов к изображению см. руководство по лучшим практикам.Другие триггеры задач: в задаче, запускаемой при обновлениях базового образа, вы также можете включить триггеры, срабатывающие при фиксации исходного кода или по расписанию. Кроме того, при обновлении базового образа можно запускать многошаговую задачу.
Следующие шаги
В ниже приведенных учебниках описаны сценарии автоматизации сборки образов приложений после обновления базовых образов.