Automatyzowanie kompilacji i konserwacji obrazu kontenera za pomocą zadania usługi ACRAutomate container image builds and maintenance with ACR Tasks

Kontenery zapewniają nowe poziomy wirtualizacji, izolując zależności aplikacji i deweloperów od wymagań dotyczących infrastruktury i działania.Containers provide new levels of virtualization, isolating application and developer dependencies from infrastructure and operational requirements. Pozostaje jednak potrzeba rozwiązania tego, jak ta wirtualizacja aplikacji jest zarządzana i poprawiana w całym cyklu życia kontenera.What remains, however, is the need to address how this application virtualization is managed and patched over the container lifecycle.

Co to jest zadania usługi ACR?What is ACR Tasks?

zadania usługi ACR to zestaw funkcji w Azure Container Registry.ACR Tasks is a suite of features within Azure Container Registry. Zapewnia ona oparte na chmurze tworzenie obrazów kontenerów dla platform, w tym Linux, Windows i ARM, oraz może automatyzować stosowanie poprawek systemu operacyjnego i struktury dla kontenerów platformy 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. zadania usługi ACR nie tylko rozszerza cykl tworzenia "pętli wewnętrznej" na chmurę przy użyciu kompilacji obrazu kontenera na żądanie, ale także umożliwia automatyczne kompilacje wyzwalane przez aktualizacje kodu źródłowego, aktualizacje obrazu podstawowego kontenera lub czasomierze.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. Na przykład przy użyciu wyzwalaczy aktualizacji obrazu podstawowego można zautomatyzować przepływ pracy poprawiania systemu operacyjnego i struktury aplikacji, zachowując bezpieczne środowiska przy zachowaniu zasad kontenerów niezmiennych.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.

Scenariusze zadańTask scenarios

zadania usługi ACR obsługuje kilka scenariuszy tworzenia i obsługi obrazów kontenerów i innych artefaktów.ACR Tasks supports several scenarios to build and maintain container images and other artifacts. Szczegółowe informacje można znaleźć w poniższych sekcjach tego artykułu.See the following sections in this article for details.

Każde zadanie usługi ACR ma skojarzony kontekst kodu źródłowego — lokalizację zestawu plików źródłowych używanych do kompilowania obrazu kontenera lub innego artefaktu.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. Przykładowe konteksty obejmują repozytorium Git lub lokalny system plików.Example contexts include a Git repository or a local filesystem.

Zadania mogą również korzystać ze zmiennychuruchamiania , dzięki czemu można ponownie używać definicji zadań i standaryzować tagi dla obrazów i artefaktów.Tasks can also take advantage of run variables, so you can reuse task definitions and standardize tags for images and artifacts.

Szybkie zadanieQuick task

Cykl tworzenia pętli wewnętrznej, iteracyjny proces pisania kodu, budowania i testowania aplikacji przed zatwierdzeniem do kontroli źródła, to tak naprawdę początek zarządzania cyklem życia kontenera.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.

Przed zatwierdzeniem pierwszego wiersza kodu funkcja szybkiego zadania usługi ACR może zapewnić zintegrowane środowisko programowe przez odciążenie kompilacji obrazu kontenera na platformę 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. Za pomocą szybkich zadań można zweryfikować definicje zautomatyzowanej kompilacji i wychwytują potencjalne problemy przed zatwierdzeniem kodu.With quick tasks, you can verify your automated build definitions and catch potential problems prior to committing your code.

Przy użyciu znanego formatu polecenie az acr build w interfejsie wiersza polecenia platformy Azure przyjmuje kontekst (zestaw plików do skompilowania), wysyła go do usługi zadania usługi ACR i domyślnie wypycha skompilowany obraz do swojego rejestru po docker build zakończeniu. 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 to ACR Tasks and, by default, pushes the built image to its registry upon completion.

Aby uzyskać wprowadzenie, zobacz przewodnik Szybki start, aby skompilować i uruchomić obraz kontenera w Azure Container Registry.For an introduction, see the quickstart to build and run a container image in Azure Container Registry.

zadania usługi ACR jest zaprojektowany jako prymityw cyklu życia kontenera.ACR Tasks is designed as a container lifecycle primitive. Na przykład zintegruj zadania usługi ACR z rozwiązaniem ci/CD.For example, integrate ACR Tasks into your CI/CD solution. Wykonując polecenie az login z jednostką usługi, rozwiązanie ci/CD może następnie wytworzyć polecenia az acr build, aby rozpoczynać kompilacje obrazów. By executing az login with a service principal, your CI/CD solution could then issue az acr build commands to kick off image builds.

Dowiedz się, jak używać szybkich zadań w pierwszym samouczku zadania usługi ACR, Build container images in the cloud with zadania usługi Azure Container Registry (Tworzenie obrazów kontenerów w chmurze za pomocą zadania usługi Azure Container Registry).Learn how to use quick tasks in the first ACR Tasks tutorial, Build container images in the cloud with Azure Container Registry Tasks.

Porada

Jeśli chcesz skompilować i wypchnąć obraz bezpośrednio z kodu źródłowego bez pliku Dockerfile, Azure Container Registry polecenie az acr pack build (wersja zapoznawcza).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). To narzędzie tworzy i wypycha obraz z kodu źródłowego aplikacji przy użyciu pakietów kompilacji natywnych dla chmury.This tool builds and pushes an image from application source code using Cloud Native Buildpacks.

Wyzwalanie zadania przy aktualizacji kodu źródłowegoTrigger task on source code update

Wyzwalanie kompilacji obrazu kontenera lub zadania wieloetapowego w przypadku zatwierdzona kodu lub wykonania lub zaktualizowania żądania ściągnnięcia do publicznego lub prywatnego repozytorium Git w usłudze GitHub lub 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 public or private Git repository in GitHub or Azure DevOps. Na przykład skonfiguruj zadanie kompilacji za pomocą polecenia interfejsu wiersza polecenia platformy Azure az acr task create, określając repozytorium Git oraz opcjonalnie gałąź i plik 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. Gdy zespół aktualizuje kod w repozytorium, utworzony zadania usługi ACR webhook wyzwala kompilację obrazu kontenera zdefiniowanego w repozytorium.When your team updates code in the repository, an ACR Tasks-created webhook triggers a build of the container image defined in the repo.

zadania usługi ACR obsługuje następujące wyzwalacze po skonfigurowaniu repozytorium Git jako kontekstu zadania:ACR Tasks supports the following triggers when you set a Git repo as the task's context:

WyzwalaczTrigger Domyślnie włączoneEnabled by default
ZatwierdzenieCommit TakYes
Żądanie ściągnięciaPull request NieNo

Aby skonfigurować wyzwalacz aktualizacji kodu źródłowego, należy podać zadaniu osobisty token dostępu , aby ustawić ten obiekt webhook w publicznym lub prywatnym repozytorium GitHub lub Azure DevOps repozytorium.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.

Uwaga

Obecnie zadania usługi ACR nie obsługuje wyzwalaczy zatwierdzeń ani żądań ściągnięć w GitHub Enterprise żądaniami.Currently, ACR Tasks doesn't support commit or pull request triggers in GitHub Enterprise repos.

Dowiedz się, jak wyzwalać kompilacje po zatwierdzeniu kodu źródłowego, zadania usługi ACR samouczku Automatyzowanie kompilacji obrazu kontenera za pomocą zadania usługi Azure Container Registry.Learn how to trigger builds on source code commit in the second ACR Tasks tutorial, Automate container image builds with Azure Container Registry Tasks.

Automatyzowanie poprawek systemu operacyjnego i strukturyAutomate OS and framework patching

Możliwość zadania usługi ACR przepływu pracy kompilacji kontenera wynika z możliwości wykrywania aktualizacji obrazu podstawowego.The power of ACR Tasks to truly enhance your container build workflow comes from its ability to detect an update to a base image. Funkcja większości obrazów kontenerów, obraz podstawowy jest obrazem nadrzędnym, na którym bazuje co najmniej jeden obraz aplikacji.A feature of most container images, a base image is a parent image on which one or more application images are based. Obrazy podstawowe zwykle zawierają system operacyjny, a czasami struktury aplikacji.Base images typically contain the operating system, and sometimes application frameworks.

Zadanie ACR można skonfigurować w celu śledzenia zależności od obrazu podstawowego podczas kompilowania obrazu aplikacji.You can set up an ACR task to track a dependency on a base image when it builds an application image. Gdy zaktualizowany obraz podstawowy jest wypychany do rejestru lub obraz podstawowy jest aktualizowany w publicznym repo, takim jak w programie Docker Hub, program zadania usługi ACR automatycznie skompilować dowolne obrazy aplikacji na jego podstawie.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. Dzięki temu automatycznemu wykrywaniu i ponownemu kompilowaniu zadania usługi ACR zaoszczędzić czas i nakład pracy zwykle wymagany do ręcznego śledzenia i aktualizowania każdego obrazu aplikacji odwołującego się do zaktualizowanego obrazu podstawowego.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.

Dowiedz się więcej o wyzwalaczach aktualizacji obrazu podstawowego dla zadania usługi ACR.Learn more about base image update triggers for ACR Tasks. Dowiedz się, jak wyzwolić kompilację obrazu, gdy obraz podstawowy zostanie wypchnięty do rejestru kontenerów, korzystając z samouczka Automatyzowanie kompilacji obrazu kontenera po zaktualizowaniu obrazu podstawowego w rejestrze kontenerów platformy AzureAnd 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

Planowanie zadaniaSchedule a task

Opcjonalnie zaplanuj zadanie przez skonfigurowanie co najmniej jednego wyzwalacza czasomierza podczas jego tworzenia lub aktualizowania.Optionally schedule a task by setting up one or more timer triggers when you create or update the task. Planowanie zadania jest przydatne w przypadku uruchamiania obciążeń kontenerów zgodnie ze zdefiniowanym harmonogramem lub uruchamiania operacji konserwacji lub testów obrazów wypychanych regularnie do rejestru.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. Aby uzyskać szczegółowe informacje, zobacz Uruchamianie zadania ACR zgodnie ze zdefiniowanym harmonogramem.For details, see Run an ACR task on a defined schedule.

Zadania wieloetapoweMulti-step tasks

Zadania wieloetapowe zapewniają oparte na krokach definicje zadań i ich wykonywanie w celu tworzenia, testowania i poprawiania obrazów kontenerów w chmurze.Multi-step tasks provide step-based task definition and execution for building, testing, and patching container images in the cloud. Kroki zadania zdefiniowane w pliku YAML określają pojedyncze operacje kompilacji i wypychania dla obrazów kontenerów lub innych artefaktów.Task steps defined in a YAML file specify individual build and push operations for container images or other artifacts. Mogą one również definiować wykonanie jednego lub kilku kontenerów, z każdym krokiem używającym kontenera jako jego środowiska wykonawczego.They can also define the execution of one or more containers, with each step using the container as its execution environment.

Można na przykład utworzyć zadanie wieloetapowe, które automatyzuje następujące czynności:For example, you can create a multi-step task that automates the following:

  1. Tworzenie obrazu aplikacji internetowejBuild a web application image
  2. Uruchamianie kontenera aplikacji internetowejRun the web application container
  3. Tworzenie obrazu testowego aplikacji internetowejBuild a web application test image
  4. Uruchamianie kontenera testowego aplikacji internetowej, który wykonuje testy względem uruchomionego kontenera aplikacjiRun the web application test container, which performs tests against the running application container
  5. Jeśli testy przebiegną, skompilowanie pakietu archiwum helm chartIf the tests pass, build a Helm chart archive package
  6. Wykonywanie operacji helm upgrade przy użyciu nowego pakietu archiwum helm chartPerform a helm upgrade using the new Helm chart archive package

Zadania wieloetapowe umożliwiają podzielenie budynku, uruchomienia i testowania obrazu na bardziej skonfigurowalne kroki z obsługą zależności między krokami.Multi-step tasks enable you to split the building, running, and testing of an image into more composable steps, with inter-step dependency support. Dzięki wieloetapowym zadania usługi ACR zapewniasz bardziej szczegółową kontrolę nad przepływami pracy tworzenia, testowania i poprawiania struktury oraz tworzenia i testowania obrazów.With multi-step tasks in ACR Tasks, you have more granular control over image building, testing, and OS and framework patching workflows.

Dowiedz się więcej o zadaniach wieloetapowych w teście Run multi-step build, test, and patch tasks in zadania usługi ACR.Learn about multi-step tasks in Run multi-step build, test, and patch tasks in ACR Tasks.

Lokalizacje kontekstoweContext locations

W poniższej tabeli przedstawiono przykłady obsługiwanych lokalizacji kontekstu dla zadania usługi ACR:The following table shows examples of supported context locations for ACR Tasks:

Lokalizacja kontekstuContext location OpisDescription PrzykładExample
Lokalny system plikówLocal filesystem Pliki w katalogu w lokalnym systemie plików.Files within a directory on the local filesystem. /home/user/projects/myapp
Gałąź główna usługi GitHubGitHub main branch Pliki w głównej (lub innej domyślnej) gałęzi publicznego lub prywatnego repozytorium GitHub.Files within the main (or other default) branch of a public or private GitHub repository. https://github.com/gituser/myapp-repo.git
Gałąź GitHubGitHub branch Konkludna gałąź publicznego lub prywatnego repozytorium GitHub.Specific branch of a public or private GitHub repo. https://github.com/gituser/myapp-repo.git#mybranch
Podfolder usługi GitHubGitHub subfolder Pliki w podfolderze w publicznym lub prywatnym repozytorium GitHub.Files within a subfolder in a public or private GitHub repo. Przykład przedstawia kombinację specyfikacji gałęzi i podfolderu.Example shows combination of a branch and subfolder specification. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
Zatwierdzenie w usłudze GitHubGitHub commit Określone zatwierdzenie w publicznym lub prywatnym repozytorium GitHub.Specific commit in a public or private GitHub repo. Przykład przedstawia kombinację specyfikacji skrótu zatwierdzenia (SHA) i podfolderu.Example shows combination of a commit hash (SHA) and subfolder specification. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Azure DevOps podfolderAzure DevOps subfolder Pliki w podfolderze w publicznym lub prywatnym repocie platformy Azure.Files within a subfolder in a public or private Azure repo. Przykład przedstawia kombinację specyfikacji gałęzi i podfolderu.Example shows combination of branch and subfolder specification. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Zdalny tarballRemote tarball Pliki w skompresowanym archiwum na zdalnym serwerze sieci Web.Files in a compressed archive on a remote webserver. http://remoteserver/myapp.tar.gz
Artefakt w rejestrze kontenerówArtifact in container registry Pliki artefaktów OCI w repozytorium rejestru kontenerów.OCI artifact files in a container registry repository. oci://myregistry.azurecr.io/myartifact:mytag

Uwaga

W przypadku używania prywatnego repozytorium Git jako kontekstu zadania należy podać osobisty token dostępu.When using a private Git repo as a context for a task, you need to provide a personal access token (PAT).

Platformy obrazówImage platforms

Domyślnie program zadania usługi ACR obrazy dla systemu operacyjnego Linux i architektury amd64.By default, ACR Tasks builds images for the Linux OS and the amd64 architecture. Określ --platform tag do kompilowania obrazów systemu Windows lub obrazów systemu Linux dla innych architektur.Specify the --platform tag to build Windows images or Linux images for other architectures. Określ system operacyjny i opcjonalnie obsługiwaną architekturę w formacie system operacyjny/architektura (na przykład --platform Linux/arm ).Specify the OS and optionally a supported architecture in OS/architecture format (for example, --platform Linux/arm). W przypadku architektur ARM opcjonalnie określ wariant w formacie system operacyjny/architektura/wariant (na przykład --platform Linux/arm64/v8 ):For ARM architectures, optionally specify a variant in OS/architecture/variant format (for example, --platform Linux/arm64/v8):

System operacyjnyOS ArchitekturaArchitecture
LinuxLinux amd64amd64
armarm
arm64arm64
386386
WindowsWindows amd64amd64

Wyświetlanie danych wyjściowych zadania podrzędnegoView task output

Każdy przebieg zadania generuje dane wyjściowe dziennika, które można sprawdzić, aby ustalić, czy kroki zadania zostały pomyślnie uruchomione.Each task run generates log output that you can inspect to determine whether the task steps ran successfully. Po ręcznym wyzwoleniu zadania dane wyjściowe dziennika dla uruchomienia zadania są przesyłane strumieniowo do konsoli i przechowywane w celu późniejszego pobrania.When you trigger a task manually, log output for the task run is streamed to the console and also stored for later retrieval. Gdy zadanie jest wyzwalane automatycznie, na przykład przez zatwierdzenie kodu źródłowego lub aktualizację obrazu podstawowego, dzienniki zadań są przechowywane tylko.When a task is automatically triggered, for example by a source code commit or a base image update, task logs are only stored. Wyświetl dzienniki uruchamiania w Azure Portal lub użyj polecenia az acr task logs.View the run logs in the Azure portal, or use the az acr task logs command.

Zobacz więcej informacji na temat wyświetlania dzienników zadań i zarządzania nimi.See more about viewing and managing task logs.

Następne krokiNext steps

Gdy wszystko będzie gotowe do zautomatyzowania kompilacji i konserwacji obrazu kontenera w chmurze, zapoznaj się z zadania usługi ACR samouczka.When you're ready to automate container image builds and maintenance in the cloud, check out the ACR Tasks tutorial series.

Opcjonalnie zainstaluj rozszerzenie docker for Visual Studio Code i rozszerzenie konta platformy Azure, aby współpracować z rejestrami kontenerów platformy Azure.Optionally install the Docker Extension for Visual Studio Code and the Azure Account extension to work with your Azure container registries. Ściąganie i wypychanie obrazów do rejestru kontenerów platformy Azure lub uruchamianie zadania usługi ACR w Visual Studio Code.Pull and push images to an Azure container registry, or run ACR Tasks, all within Visual Studio Code.