Automatisieren von Containerimage-Builds und Wartung mit ACR TasksAutomate container image builds and maintenance with ACR Tasks

Container bieten neue Virtualisierungsmöglichkeiten und trennen Anwendungs- und Entwicklerabhängigkeiten von Infrastruktur- und Betriebsanforderungen.Containers provide new levels of virtualization, isolating application and developer dependencies from infrastructure and operational requirements. Ein Aspekt, der allerdings weiterhin behandelt werden muss, ist das das Verwalten und Patchen dieser Anwendungsvirtualisierung im Laufe des Containerlebenszyklus.What remains, however, is the need to address how this application virtualization is managed and patched over the container lifecycle.

Was ist ACR Tasks?What is ACR Tasks?

ACR Tasks ist eine Suite von Funktionen in Azure Container Registry.ACR Tasks is a suite of features within Azure Container Registry. Sie bietet cloudbasierte Containerimageerstellung für Plattformen inklusive Linux, Windows und ARM. Außerdem kann sie Betriebssystem- und Frameworkpatching für Ihre Docker-Container automatisieren.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 erweitert nicht nur Ihren „inneren“ Entwicklungszyklus für die Cloud mit bedarfsgesteuerten Containerimagebuilds, sondern ermöglicht auch automatisierte Builds, die durch Quellcodeupdates, Updates des Basisimages eines Containers oder Timer aktualisiert werden.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. Mit Triggern für Basisimageaktualisierungen können Sie z. B. Ihren Workflow für Betriebssystem- und Anwendungspatches automatisieren und so die Sicherheit von Umgebungen gewährleisten sowie die Prinzipien unveränderlicher Container einhalten.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.

TaskszenarienTask scenarios

ACR Tasks unterstützt verschiedene Szenarien zum Erstellen und Verwalten von Containerimages und anderen Artefakten.ACR Tasks supports several scenarios to build and maintain container images and other artifacts. Weitere Informationen finden Sie in den folgenden Abschnitten dieses Artikels.See the following sections in this article for details.

Jeder ACR Tasks-Instanz ist ein Quellcodekontext zugeordnet: der Speicherort eines Satzes von Quelldateien, der zum Erstellen eines Containerimages oder eines anderen Artefakts verwendet wird.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. Beispielkontexte sind ein Git-Repository oder ein lokales Dateisystem.Example contexts include a Git repository or a local filesystem.

Tasks können auch Laufzeitvariablen nutzen, sodass Sie Taskdefinitionen wiederverwenden und Tags für Images und Artefakte standardisieren können.Tasks can also take advantage of run variables, so you can reuse task definitions and standardize tags for images and artifacts.

SchnelltaskQuick task

Der „interne“ Entwicklungszyklus, der iterative Prozess, der das Schreiben von Code sowie das Erstellen und Testen Ihrer Anwendung umfasst, bevor sie zur Quellcodeverwaltung committet wird, ist wirklich der Beginn der Lebenszyklusverwaltung des Containers.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.

Bevor Sie Ihre erste Zeile Code committen, kann das Feature Schnelltask von ACR Tasks eine integrierte Entwicklungsumgebung bereitstellen, indem Ihre Containerimage-Buildvorgänge in Azure ausgelagert werden.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. Mit Schnelltasks können Sie Ihre automatisierten Builddefinitionen überprüfen und potenzielle Probleme abfangen, bevor Sie Ihren Code committen.With quick tasks, you can verify your automated build definitions and catch potential problems prior to committing your code.

Der Befehl az acr build der Azure CLI verwendet das vertraute docker build-Format. Er akzeptiert einen Kontext (Satz zu erstellender Dateien), sendet ihn an ACR Tasks und pusht das erstellte Image nach dessen Fertigstellung standardmäßig in die entsprechende Registrierung.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.

Eine Einführung finden Sie im Schnellstart: Erstellen und Ausführen eines Containerimages in Azure Container Registry.For an introduction, see the quickstart to build and run a container image in Azure Container Registry.

ACR Tasks ist als Grundtyp für den Containerlebenszyklus konzipiert.ACR Tasks is designed as a container lifecycle primitive. Sie können ACR Tasks also beispielsweise in Ihre CI/CD-Lösung integrieren.For example, integrate ACR Tasks into your CI/CD solution. Wenn Sie az login mit einem Dienstprinzipal ausführen, kann Ihre CI/CD-Lösung mithilfe von Befehlen vom Typ az acr build Imagebuildvorgänge initiieren.By executing az login with a service principal, your CI/CD solution could then issue az acr build commands to kick off image builds.

Informationen zur Verwendung der Schnelltasks finden Sie im ersten ACR Tasks-Tutorial: Erstellen von Containerimages in der Cloud mit Azure Container Registry Tasks.Learn how to use quick tasks in the first ACR Tasks tutorial, Build container images in the cloud with Azure Container Registry Tasks.

Tipp

Wenn Sie ein Image direkt aus dem Quellcode ohne Dockerfile-Datei erstellen und pushen möchten, nutzen Sie den az acr pack build-Befehl (Vorschau) der Azure Container Registry.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). Mit diesem Tool wird ein Image aus dem Quellcode der Anwendung mithilfe von Cloud Native Buildpacks erstellt und gepusht.This tool builds and pushes an image from application source code using Cloud Native Buildpacks.

Auslösen des Tasks beim Update des QuellcodesTrigger task on source code update

Lösen Sie einen Containerimage-Buildvorgang oder Task in mehreren Schritten aus, wenn Code in ein öffentliches oder privates Git-Repository in GitHub oder Azure DevOps committet oder ein Pull Request erstellt oder aktualisiert wird.Trigger a container image build or multi-step task when code is committed, or a pull request is made or updated, to a public or private Git repository in GitHub or Azure DevOps. Konfigurieren Sie z. B. einen Buildtask mithilfe des Azure CLI-Befehls az acr task create, indem Sie ein Git-Repository und optional einen Branch und eine Dockerfile-Datei angeben.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. Wenn Ihr Team Code im Repository aktualisiert, löst ein von ACR Tasks erstellter Webhook einen Buildvorgang für das im Repository definierte Containerimage aus.When your team updates code in the repository, an ACR Tasks-created webhook triggers a build of the container image defined in the repo.

ACR Tasks unterstützt die folgenden Trigger, wenn Sie ein Git-Repository als Taskkontext festlegen:ACR Tasks supports the following triggers when you set a Git repo as the task's context:

TriggerTrigger Standardmäßig aktiviertEnabled by default
CommitCommit JaYes
Pull RequestPull request NeinNo

Um den Trigger für die Quellcodeaktualisierung zu konfigurieren, stellen Sie dem Task ein persönliches Zugriffstoken (Personal Access Token, PAT) zur Verfügung, um den Webhook im öffentlichen oder privaten GitHub- oder Azure DevOps-Repository festzulegen.To configure a source code update trigger, you need to provide the task a personal access token (PAT) to set the webhook in the public or private GitHub or Azure DevOps repo.

Hinweis

Derzeit unterstützt ACR Tasks keine Anforderungstrigger für Commit- oder Pullvorgänge in GitHub Enterprise-Repositorys.Currently, ACR Tasks doesn't support commit or pull request triggers in GitHub Enterprise repos.

Informationen zum Auslösen von Buildvorgängen nach dem Committen von Quellcode finden Sie im zweiten ACR Tasks-Tutorial: Automatisieren von Buildvorgängen für Containerimages mit Azure Container Registry Tasks.Learn how to trigger builds on source code commit in the second ACR Tasks tutorial, Automate container image builds with Azure Container Registry Tasks.

Automatisierung von Betriebssystem- und FrameworkpatchingAutomate OS and framework patching

Durch die Möglichkeit zur Erkennung von Basisimageaktualisierungen bietet ACR Tasks einen echten Mehrwert für Ihren Containererstellungsworkflow.The power of ACR Tasks to truly enhance your container build workflow comes from its ability to detect an update to a base image. Ein Basisimage, das ein Feature der meisten Containerimages ist, ist ein übergeordnetes Image, auf dem ein oder mehrere Anwendungsimages basieren.A feature of most container images, a base image is a parent image on which one or more application images are based. Basisimages enthalten in der Regel das Betriebssystem und manchmal auch Anwendungsframeworks.Base images typically contain the operating system, and sometimes application frameworks.

Sie können einen ACR Task einrichten, um eine Abhängigkeit von einem Basisimage zu verfolgen, wenn es ein Anwendungsimage erstellt.You can set up an ACR task to track a dependency on a base image when it builds an application image. Wenn das aktualisierte Basisimage in Ihre Registrierung gepusht oder ein Basisimage in einem öffentlichen Repository. wie Docker Hub, aktualisiert wird, kann ACR Tasks automatisch alle darauf basierenden Anwendungsimages erstellen.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. Die automatische Erkennung und Neuerstellung von ACR Tasks spart Zeit, die ansonsten für die manuelle Nachverfolgung und Aktualisierung der einzelnen Anwendungsimages aufgewendet werden müsste, die auf Ihr aktualisiertes Basisimage verweisen.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.

Erfahren Sie mehr über die Basisimageaktualisierungs-Trigger für ACR Tasks.Learn more about base image update triggers for ACR Tasks. Und erfahren Sie, wie Sie einen Imagebuild auslösen, wenn ein Basisimage per Pushvorgang in eine Containerregistrierung übertragen wird, im Tutorial Automatisieren von Containerimagebuilds, wenn ein Basisimage in einer Azure Container Registry aktualisiert wird.And learn how to trigger an image build when a base image is pushed to a container registry in the tutorial Automate container image builds when a base image is updated in a Azure container registry

Planen eines TasksSchedule a task

Planen Sie optional einen Task, indem Sie einen oder mehrere Zeitgebertrigger einrichten, wenn Sie den Task erstellen oder aktualisieren.Optionally schedule a task by setting up one or more timer triggers when you create or update the task. Das Planen eines Tasks eignet sich zum Ausführen von Containerworkloads nach einem definierten Zeitplan oder zum Ausführen von Wartungsvorgängen oder Tests für Images, die regelmäßig in Ihre Registrierung gepusht werden.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. Weitere Informationen finden Sie unter Ausführen einer ACR-Aufgabe nach einem definierten Zeitplan.For details, see Run an ACR task on a defined schedule.

Mehrstufige AufgabenMulti-step tasks

Mehrstufige Aufgaben bieten schrittbasierte Aufgabendefinition und -ausführung für Erstellen, Testen und Patchen von Containerimages in der Cloud.Multi-step tasks provide step-based task definition and execution for building, testing, and patching container images in the cloud. In einer YAML-Datei definierte Taskschritte legen einzelne Build- und Pushvorgänge für Containerimages oder andere Artefakte fest.Task steps defined in a YAML file specify individual build and push operations for container images or other artifacts. Sie können auch die Ausführung eines oder mehrerer Container mit jedem Schritt definieren, wobei der Container als Ausführungsumgebung verwendet wird.They can also define the execution of one or more containers, with each step using the container as its execution environment.

Beispielsweise können Sie eine mehrstufige Aufgaben erstellen, die die folgenden Vorgänge automatisiert:For example, you can create a multi-step task that automates the following:

  1. Erstellen eines WebanwendungsimagesBuild a web application image
  2. Ausführen des WebanwendungscontainersRun the web application container
  3. Erstellen eines Webanwendungs-TestimagesBuild a web application test image
  4. Ausführen des Webanwendungs-Testcontainers, der Tests für den aktuell ausgeführten Anwendungscontainer durchführtRun the web application test container, which performs tests against the running application container
  5. Wenn die Tests erfolgreich sind: Erstellen eines Helm-Chart-ArchivpaketsIf the tests pass, build a Helm chart archive package
  6. Ausführen von helm upgrade mithilfe des neuen Helm-Chart-ArchivpaketsPerform a helm upgrade using the new Helm chart archive package

Mit mehrstufigen Aufgaben können Sie das Erstellen, Ausführen und Testen eines Images in mehrere individuelle Schritte aufteilen, wobei Abhängigkeiten zwischen den Schritten unterstützt werden.Multi-step tasks enable you to split the building, running, and testing of an image into more composable steps, with inter-step dependency support. Mit mehrstufigen Aufgaben in ACR Tasks erhalten Sie eine bessere Kontrolle über die Workflows zur Erstellung von Images, Tests, Betriebssystem- und Frameworkpatches.With multi-step tasks in ACR Tasks, you have more granular control over image building, testing, and OS and framework patching workflows.

Weitere Informationen zu mehrstufigen Aufgaben finden Sie unter Ausführen von mehrstufigen Build-, Test- und Patchaufgaben in ACR Tasks.Learn about multi-step tasks in Run multi-step build, test, and patch tasks in ACR Tasks.

KontextspeicherorteContext locations

Die folgende Tabelle zeigt einige Beispiele von unterstützten Kontextspeicherorten für ACR Tasks:The following table shows a few examples of supported context locations for ACR Tasks:

KontextspeicherortContext location BESCHREIBUNGDescription BeispielExample
Lokales DateisystemLocal filesystem Dateien in einem Verzeichnis auf dem lokalen Dateisystem.Files within a directory on the local filesystem. /home/user/projects/myapp
GitHub-MasterbranchGitHub master branch Dateien im Masterbranch (oder einem anderen Standardbranch) eines öffentlichen oder privaten GitHub-RepositorysFiles within the master (or other default) branch of a public or private GitHub repository. https://github.com/gituser/myapp-repo.git
GitHub-BranchGitHub branch Bestimmter Branch eines öffentlichen oder privaten GitHub-RepositorysSpecific branch of a public or private GitHub repo. https://github.com/gituser/myapp-repo.git#mybranch
GitHub-UnterordnerGitHub subfolder Dateien in einem Unterordner in einem öffentlichen oder privaten GitHub-Repository.Files within a subfolder in a public or private GitHub repo. Das Beispiel zeigt die Kombination der Branch- und Unterordnerspezifikation.Example shows combination of a branch and subfolder specification. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
GitHub-CommitGitHub commit Spezifischer Commit in ein öffentliches oder privates GitHub-Repository.Specific commit in a public or private GitHub repo. Das Beispiel zeigt die Kombination aus einem Commit-Hash (SHA) und einer Unterordnerspezifikation.Example shows combination of a commit hash (SHA) and subfolder specification. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Azure DevOps-UnterordnerAzure DevOps subfolder Dateien in einem Unterordner in einem öffentlichen oder privaten Azure-Repository.Files within a subfolder in a public or private Azure repo. Das Beispiel zeigt die Kombination der Branch- und Unterordnerspezifikation.Example shows combination of branch and subfolder specification. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
RemotetarballRemote tarball Dateien in einem komprimierten Archiv auf einem Remotewebserver.Files in a compressed archive on a remote webserver. http://remoteserver/myapp.tar.gz

Hinweis

Wenn Sie ein privates Git-Repository als Kontext für eine Aufgabe verwenden, müssen Sie ein persönliches Zugriffstoken (PAT) bereitstellen.When using a private Git repo as a context for a task, you need to provide a personal access token (PAT).

ImageplattformenImage platforms

ACR Tasks erstellt standardmäßig Images für das Linux-Betriebssystem und die amd64-Architektur.By default, ACR Tasks builds images for the Linux OS and the amd64 architecture. Geben Sie das Tag --platform an, um Windows-Images oder Linux-Images für andere Architekturen zu erstellen.Specify the --platform tag to build Windows images or Linux images for other architectures. Geben Sie das Betriebssystem und optional eine unterstützte Architektur im Format „Betriebssystem/Architektur“ an (z. B. --platform Linux/arm).Specify the OS and optionally a supported architecture in OS/architecture format (for example, --platform Linux/arm). Geben Sie bei ARM-Architekturen optional eine Variante im Format „Betriebssystem/Architektur/Variante“ an (z. B. --platform Linux/arm64/v8):For ARM architectures, optionally specify a variant in OS/architecture/variant format (for example, --platform Linux/arm64/v8):

OSOS AufbauArchitecture
LinuxLinux amd64amd64
ARMarm
arm64arm64
386386
WindowsWindows amd64amd64

Anzeigen der AufgabenausgabeView task output

Bei jeder Aufgabenausführung wird eine Protokollausgabe erzeugt, die Sie überprüfen können, um festzustellen, ob die Aufgabenschritte erfolgreich ausgeführt wurden.Each task run generates log output that you can inspect to determine whether the task steps ran successfully. Wenn Sie eine Aufgabe manuell auslösen, wird die Protokollausgabe für die Ausführung der Aufgabe an die Konsole gestreamt und auch für einen späteren Abruf gespeichert.When you trigger a task manually, log output for the task run is streamed to the console and also stored for later retrieval. Wenn ein Task automatisch ausgelöst wird, z. B. durch einen Quellcodecommit oder ein Basisimageupdate, werden die Aufgabenprotokolle nur gespeichert.When a task is automatically triggered, for example by a source code commit or a base image update, task logs are only stored. Zeigen Sie die Ausführungsprotokolle im Azure-Portal an, oder verwenden Sie den Befehl az acr task logs.View the run logs in the Azure portal, or use the az acr task logs command.

Weitere Informationen finden Sie unter Anzeigen und Verwalten von Aufgabenprotokollen.See more about viewing and managing task logs.

Nächste SchritteNext steps

Wenn Sie bereit sind, die Erstellung und Wartung von Containerimages in der Cloud zu automatisieren, informieren Sie sich in der ACR Tasks-Tutorialreihe.When you're ready to automate container image builds and maintenance in the cloud, check out the ACR Tasks tutorial series.

Installieren Sie optional die Docker-Erweiterung für Visual Studio Code und die Azure-Kontoerweiterung für die Verwendung mit Ihren Azure-Containerregistrierungen.Optionally install the Docker Extension for Visual Studio Code and the Azure Account extension to work with your Azure container registries. In Visual Studio Code können Sie Pull- und Pushvorgänge für Images in einer Azure-Containerregistrierung oder auch ACR Tasks ausführen.Pull and push images to an Azure container registry, or run ACR Tasks, all within Visual Studio Code.