Автоматизация сборки и обслуживание образов контейнеров с помощью задач контроля доступаAutomate container image builds and maintenance with ACR Tasks

Контейнеры предоставляют новые уровни виртуализации, изолируя зависимости приложения и разработчиков от требований в отношении инфраструктуры и эксплуатации.Containers provide new levels of virtualization, isolating application and developer dependencies from infrastructure and operational requirements. Тем не менее, остается необходимость решить, как управление виртуализацией приложений будет осуществляться в течение жизненного цикла контейнера.What remains, however, is the need to address how this application virtualization is managed and patched over the container lifecycle.

Что такое "Задачи ACR"?What is ACR Tasks?

Задачи ACR — это набор компонентов в Реестре контейнеров Azure.ACR Tasks is a suite of features within Azure Container Registry. Он обеспечивает облачное создание образов контейнеров для платформ , включая Linux, Windows и ARM, а также может автоматизировать исправление ОС и платформы для контейнеров DOCKER.It provides cloud-based container image building for platforms including Linux, Windows, and ARM, and can automate OS and framework patching for your Docker containers. Задачи записи контроля доступа расширяют цикл разработки "внутренний цикл" до облака с сборками образа контейнера по требованию, но также включают автоматические сборки, активируемые обновлениями исходного кода, обновлениями базового образа контейнера или таймерами.ACR Tasks not only extends your "inner-loop" development cycle to the cloud with on-demand container image builds, but also enables automated builds triggered by source code updates, updates to a container's base image, or timers. Например, с помощью триггеров обновления базовых образов можно автоматизировать рабочий процесс исправления операционной системы и платформы приложений, сохранив защищенные среды и применяя принципы неизменяемых контейнеров.For example, with base image update triggers, you can automate your OS and application framework patching workflow, maintaining secure environments while adhering to the principles of immutable containers.

Сценарии задачTask scenarios

Задачи записи контроля доступа поддерживают несколько сценариев для создания и обслуживания образов контейнеров и других артефактов.ACR Tasks supports several scenarios to build and maintain container images and other artifacts. Дополнительные сведения см. в следующих разделах этой статьи.See the following sections in this article for details.

Каждая задача записи контроля доступа имеет связанный контекст исходного кода — расположение набора исходных файлов, используемых для построения образа контейнера или другого артефакта.Each ACR Task has an associated source code context - the location of a set of source files used to build a container image or other artifact. Примеры контекстов включают репозиторий Git или локальную файловую систему.Example contexts include a Git repository or a local filesystem.

Задачи также могут использовать преимущества переменных запуска, поэтому можно повторно использовать определения задач и стандартизировать теги для изображений и артефактов.Tasks can also take advantage of run variables, so you can reuse task definitions and standardize tags for images and artifacts.

Быстрая задачаQuick task

Цикл разработки "внутреннего цикла" — это итеративный процесс написания кода, сборки и тестирования приложения перед фиксацией в системе управления версиями. Это лишь начало управления жизненным циклом контейнера.The inner-loop development cycle, the iterative process of writing code, building, and testing your application before committing to source control, is really the beginning of container lifecycle management.

Прежде чем зафиксировать первую строку кода, функция Быстрая задача службы "Задачи ACR" может обеспечить интегрированный опыт разработки, разгружая сборки образов контейнера в Azure.Before you commit your first line of code, ACR Tasks's quick task feature can provide an integrated development experience by offloading your container image builds to Azure. С помощью быстрых задач можно проверить автоматические определения сборки и перехватывать потенциальные проблемы перед фиксацией кода.With quick tasks, you can verify your automated build definitions and catch potential problems prior to committing your code.

Используя привычный docker build формат, команда AZ запись контроля доступа в Azure CLI принимает контекст (набор файлов для сборки), отправляет задачи записи контроля доступа, а по умолчанию помещает созданный образ в реестр после завершения.Using the familiar docker build format, the az acr build command in the Azure CLI takes a context (the set of files to build), sends it ACR Tasks and, by default, pushes the built image to its registry upon completion.

Общие сведения см. в кратком руководстве по созданию и запуску образа контейнера в реестре контейнеров Azure.For an introduction, see the quickstart to build and run a container image in Azure Container Registry.

Служба "Задачи ACR" разработана как примитив жизненного цикла контейнеров.ACR Tasks is designed as a container lifecycle primitive. К примеру, интегрируйте службу "Задачи ACR" в решение CI/CD.For example, integrate ACR Tasks into your CI/CD solution. Выполняя команду AZ login с субъектом-службой, решение CI/CD может выдавать команды AZ контроля доступа для запуска сборок образа.By executing az login with a service principal, your CI/CD solution could then issue az acr build commands to kick off image builds.

Узнайте, как использовать быстрые задачи из первого руководства по Задачам ACR: Руководство. Создание образов контейнера в облаке с помощью службы "Задачи Реестра контейнеров Azure".Learn how to use quick tasks in the first ACR Tasks tutorial, Build container images in the cloud with Azure Container Registry Tasks.

Совет

Если вы хотите создать и отправить образ непосредственно из исходного кода, без Dockerfile, реестр контейнеров Azure предоставляет команду AZ Pack Build (Предварительная версия).If you want to build and push an image directly from source code, without a Dockerfile, Azure Container Registry provides the az acr pack build command (preview). Это средство создает и отправляет образ из исходного кода приложения с помощью собственного облачного буилдпаккс.This tool builds and pushes an image from application source code using Cloud Native Buildpacks.

Активировать задачу при обновлении исходного кодаTrigger task on source code update

Активация сборки образа контейнера или многоэтапной задачи при фиксации кода или создании или обновлении запроса на включение внесенных изменений в репозиторий Git в GitHub или Azure DevOps.Trigger a container image build or multi-step task when code is committed, or a pull request is made or updated, to a Git repository in GitHub or Azure DevOps. Например, настройте задачу сборки с помощью команды Azure CLI AZ запись контроля доступа Create , указав репозиторий Git и, при необходимости, ветвь и Dockerfile.For example, configure a build task with the Azure CLI command az acr task create by specifying a Git repository and optionally a branch and Dockerfile. Когда команда обновляет код в репозитории, веб-перехватчик, созданный задачами записи контроля доступа, запускает сборку образа контейнера, определенного в репозитории.When your team updates code in the repository, an ACR Tasks-created webhook triggers a build of the container image defined in the repo.

Задачи записи контроля доступа поддерживают следующие триггеры при настройке репозитория Git в качестве контекста задачи:ACR Tasks supports the following triggers when you set a Git repo as the task's context:

ТриггерTrigger Включено по умолчаниюEnabled by default
ФиксацияCommit ДаYes
Запрос на вытягиваниеPull request НетNo

Чтобы настроить триггер, укажите для задачи личный маркер доступа (PAT), чтобы задать веб-перехватчик в репозитории GitHub или Azure DevOps.To configure the trigger, you provide the task a personal access token (PAT) to set the webhook in the GitHub or Azure DevOps repo.

Узнайте, как активировать сборку при фиксации исходного кода из второго руководства по службе "Задачи ACR": Руководство. Автоматизация сборок образов контейнера с помощью службы "Задачи Реестра контейнеров Azure".Learn how to trigger builds on source code commit in the second ACR Tasks tutorial, Automate container image builds with Azure Container Registry Tasks.

Автоматизация установки исправлений ОС и платформыAutomate OS and framework patching

Возможность службы "Задачи ACR" значительно улучшать рабочий процесс сборки контейнера обуславливается ее способностью обнаруживать обновление базового образа.The power of ACR Tasks to truly enhance your container build workflow comes from its ability to detect an update to a base image. Когда обновленный базовый образ помещается в реестр или базовый образ обновляется в общедоступном репозитории, например в центре DOCKER, задачи записи контроля доступа могут автоматически создавать образы приложений на основе этого приложения.When the updated base image is pushed to your registry, or a base image is updated in a public repo such as in Docker Hub, ACR Tasks can automatically build any application images based on it.

Образы контейнеров можно классифицировать на базовые образы и образы приложения.Container images can be broadly categorized into base images and application images. К базовым образам, как правило, относятся операционная система и платформы приложений, на основе которых создано приложение, а также другие настройки.Your base images typically include the operating system and application frameworks upon which your application is built, along with other customizations. Эти базовые образы обычно создаются на основе открытых вышестоящих образов, например: Alpine Linux, Windows, .NETили node. js.These base images are themselves typically based on public upstream images, for example: Alpine Linux, Windows, .NET, or Node.js. Несколько образов вашего приложения могут совместно использовать общий базовый образ.Several of your application images might share a common base image.

Когда вышестоящая программа обслуживания обновляет образ ОС или платформу приложения, к примеру, путем внесения критического исправления системы безопасности ОС, необходимо также внести его и в базовые образы.When an OS or app framework image is updated by the upstream maintainer, for example with a critical OS security patch, you must also update your base images to include the critical fix. Затем необходимо повторно выполнить сборку каждого образа приложения, чтобы внести эти вышестоящие исправления, внесенные в базовый образ.Each application image must then also be rebuilt to include these upstream fixes now included in your base image.

Так как при создании образа контейнера служба "Задачи ACR" динамически находит зависимости базовых образов, она может определить время обновления базового образа приложения.Because ACR Tasks dynamically discovers base image dependencies when it builds a container image, it can detect when an application image's base image is updated. С помощью одной предварительно настроенной задачи сборки служба "Задачи ACR" автоматически повторно выполняет сборку каждого образа приложения.With one preconfigured build task, ACR Tasks then automatically rebuilds every application image for you. Благодаря такому автоматическому обнаружению и повторному выполнению сборок служба "Задачи ACR" экономит время и усилия, необходимые для того, чтобы вручную отслеживать и обновлять каждый образ приложения, ссылающийся на обновленный базовый образ.With this automatic detection and rebuilding, ACR Tasks saves you the time and effort normally required to manually track and update each and every application image referencing your updated base image.

Для сборок изображений из Dockerfile задача записи контроля доступа отслеживает базовый образ обновления, когда базовый образ находится в одном из следующих расположений:For image builds from a Dockerfile, an ACR task tracks a base image update when the base image is in one of the following locations:

  • реестр контейнеров Azure, в котором выполняется задача;The same Azure container registry where the task runs
  • другой реестр контейнеров Azure в том же регионе;Another Azure container registry in the same region
  • общедоступный репозиторий в Docker Hub;A public repo in Docker Hub
  • общедоступный репозиторий в Реестре контейнеров Azure.A public repo in Microsoft Container Registry

Примечание

  • Базовый триггер обновления образа включен по умолчанию в задаче записи контроля доступа.The base image update trigger is enabled by default in an ACR task.
  • Сейчас задачи записи контроля доступа отслеживают только обновления базовых образов для образов приложений (сред выполнения).Currently, ACR Tasks only tracks base image updates for application (runtime) images. Задачи записи контроля доступа не отписывают обновления базовых образов для промежуточных образов (буилдтиме), используемых в нескольких стадиях файлы dockerfile.ACR Tasks doesn't track base image updates for intermediate (buildtime) images used in multi-stage Dockerfiles.

Дополнительные сведения об исправлениях операционных систем и платформ см. в разделе Руководство по задачам контроля доступа, Автоматизация сборки образа в базовом обновлении образа с помощью задач реестра контейнеров Azure.Learn more about OS and framework patching in the third ACR Tasks tutorial, Automate image builds on base image update with Azure Container Registry Tasks.

Планирование задачиSchedule a task

При необходимости Запланируйте задачу, настроив один или несколько триггеров таймера при создании или обновлении задачи.Optionally schedule a task by setting up one or more timer triggers when you create or update the task. Планирование задачи полезно для выполнения рабочих нагрузок контейнера по определенному расписанию или для выполнения операций обслуживания или тестирования образов, которые регулярно помещаются в реестр.Scheduling a task is useful for running container workloads on a defined schedule, or running maintenance operations or tests on images pushed regularly to your registry. Дополнительные сведения см. в разделе Запуск задачи записи контроля доступа по определенному расписанию.For details, see Run an ACR task on a defined schedule.

Многошаговые задачиMulti-step tasks

Многоэтапные задачи обеспечивают определение и выполнение задач на основе шага для создания, тестирования и исправления образов контейнеров в облаке.Multi-step tasks provide step-based task definition and execution for building, testing, and patching container images in the cloud. Шаги задач, определенные в файле YAML , указывают отдельные операции сборки и отправки для образов контейнеров или других артефактов.Task steps defined in a YAML file specify individual build and push operations for container images or other artifacts. Они также могут определять выполнение одного или нескольких контейнеров, причем каждый шаг использует контейнер в качестве среды выполнения.They can also define the execution of one or more containers, with each step using the container as its execution environment.

Например, можно создать многошаговую задачу, которая автоматизирует следующие операции:For example, you can create a multi-step task that automates the following:

  1. Сборка образа веб-приложения.Build a web application image
  2. Выполнение контейнера веб-приложения.Run the web application container
  3. Сборка тестового образа веб-приложения.Build a web application test image
  4. Запустите тестовый контейнер веб-приложения, который выполняет тесты для контейнера запущенного приложения.Run the web application test container, which performs tests against the running application container
  5. Если тесты проходят успешно, создайте пакет архива диаграмм Helm.If the tests pass, build a Helm chart archive package
  6. Выполнение команды helm upgrade с использованием нового пакета архива диаграмм Helm.Perform a helm upgrade using the new Helm chart archive package

Многошаговые задачи позволяют разделить создание, выполнение и тестирование образов на большее количество составных шагов с поддержкой зависимостей между шагами.Multi-step tasks enable you to split the building, running, and testing of an image into more composable steps, with inter-step dependency support. Благодаря многошаговым задачам в службе "Задачи ACR" у вас есть более детальный контроль над рабочими процессами создания и тестирования образа, а также исправления платформы и ОС.With multi-step tasks in ACR Tasks, you have more granular control over image building, testing, and OS and framework patching workflows.

Дополнительные сведения о многошаговых задачах см. в статье Выполнение многошаговых задач сборки, тестирования и исправления в службе "Задачи ACR".Learn about multi-step tasks in Run multi-step build, test, and patch tasks in ACR Tasks.

Расположения контекстаContext locations

В следующей таблице приведено несколько примеров поддерживаемых расположений контекста для Задач ACR:The following table shows a few examples of supported context locations for ACR Tasks:

Расположение контекстаContext location ОписаниеDescription ПримерExample
Локальная файловая системаLocal filesystem Файлы в каталоге в локальной файловой системе.Files within a directory on the local filesystem. /home/user/projects/myapp
Главная ветвь GitHubGitHub master branch Файлы в главной ветви (или другой ветви по умолчанию) репозитория GitHub.Files within the master (or other default) branch of a GitHub repository. https://github.com/gituser/myapp-repo.git
Ветвь GitHubGitHub branch Определенная ветвь репозитория GitHub.Specific branch of a GitHub repo. https://github.com/gituser/myapp-repo.git#mybranch
Вложенная папка GitHubGitHub subfolder Файлы во вложенной папке в репозитории GitHub.Files within a subfolder in a GitHub repo. В примере показано сочетание ветви и спецификации вложенных папок.Example shows combination of a branch and subfolder specification. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
Удаленный архив TarballRemote tarball Файлы в сжатом архиве на удаленном веб-сервере.Files in a compressed archive on a remote webserver. http://remoteserver/myapp.tar.gz

Платформы изображенийImage platforms

По умолчанию задачи записи контроля доступа строят образы для ОС Linux и архитектуры AMD64.By default, ACR Tasks builds images for the Linux OS and the amd64 architecture. --platform Укажите тег для создания образов Windows или образов Linux для других архитектур.Specify the --platform tag to build Windows images or Linux images for other architectures. Укажите операционную систему и, при необходимости, поддерживаемую архитектуру в формате ОС/архитектуры --platform Linux/arm(например,).Specify the OS and optionally a supported architecture in OS/architecture format (for example, --platform Linux/arm). Для архитектур ARM можно дополнительно указать вариант в формате OS/Architecture/Variant (например, --platform Linux/arm64/v8):For ARM architectures, optionally specify a variant in OS/architecture/variant format (for example, --platform Linux/arm64/v8):

OSOS АрхитектураArchitecture
LinuxLinux AMD64amd64
активацииarm
arm64arm64
386386
WindowsWindows AMD64amd64

Просмотр журналов задачView task logs

Каждое выполнение задачи создает выходные данные журнала, которые можно проверить, чтобы определить, успешно ли выполнялись шаги задачи.Each task run generates log output that you can inspect to determine whether the task steps ran successfully. Если вы используете команду AZ запись контролядоступа, AZ запись после выполненияили AZ контроля доступа для запуска задачи, выходные данные журнала для выполнения задачи передаются в консоль, а также сохраняются для последующего извлечения.If you use the az acr build, az acr run, or az acr task run command to trigger the task, log output for the task run is streamed to the console and also stored for later retrieval. Если задача запускается автоматически, например при фиксации исходного кода или обновлении базового образа, журналы задач сохраняются.When a task is automatically triggered, for example by a source code commit or a base image update, task logs are only stored. Просмотрите журналы выполнения задачи в портал Azure или используйте команду AZ контроля доступа к журналам задач.View the logs for a task run in the Azure portal, or use the az acr task logs command.

По умолчанию данные и журналы для выполнения задач в реестре хранятся в течение 30 дней, а затем автоматически очищаются.By default, data and logs for task runs in a registry are retained for 30 days and then automatically purged. Если требуется архивировать данные для выполнения задачи, включите архивацию с помощью команды AZ контроля доступа Task Update-Run .If you want to archive the data for a task run, enable archiving using the az acr task update-run command. В следующем примере включается Архивация для задачи Run cf11 в реестре myregistry.The following example enables archiving for the task run cf11 in registry myregistry.

az acr task update-run --registry myregistry --run-id cf11 --no-archive false

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

Когда вы будете готовы автоматизировать сборку и обслуживание образов контейнеров в облаке, см. серию руководств по задачам записи контролядоступа.When you're ready to automate container image builds and maintenance in the cloud, check out the ACR Tasks tutorial series.

При необходимости установите расширение Docker для Visual Studio Code и расширение учетной записи Azure для работы со своими реестрами контейнеров Azure.Optionally install the Docker Extension for Visual Studio Code and the Azure Account extension to work with your Azure container registries. Извлекайте и отправляйте образы в реестр контейнеров Azure или запускайте Задачи ACR в Visual Studio Code.Pull and push images to an Azure container registry, or run ACR Tasks, all within Visual Studio Code.