Automatizzare le compilazioni e la manutenzione delle immagini del contenitore con le attività ACRAutomate container image builds and maintenance with ACR Tasks

I contenitori offrono nuovi livelli di virtualizzazione, isolando le dipendenze di sviluppo e delle applicazioni dai requisiti operativi e dell'infrastruttura.Containers provide new levels of virtualization, isolating application and developer dependencies from infrastructure and operational requirements. Ciò che rimane, tuttavia, è la necessità di risolvere il modo in cui la virtualizzazione dell'applicazione viene gestita e applicata al ciclo di vita del contenitore.What remains, however, is the need to address how this application virtualization is managed and patched over the container lifecycle.

Informazioni su ACR TasksWhat is ACR Tasks?

ACR Tasks è una suite di funzionalità in Registro Azure Container.ACR Tasks is a suite of features within Azure Container Registry. Offre funzionalità di creazione di immagini contenitore basate su cloud per le piattaforme , tra cui Linux, Windows e ARM, e può automatizzare l'applicazione di patch al sistema operativo e al Framework per i contenitori 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. Le attività ACR non solo estendono il ciclo di sviluppo "Inner-loop" nel cloud con le compilazioni di immagini del contenitore su richiesta, ma consentono anche le compilazioni automatiche attivate dagli aggiornamenti del codice sorgente, gli aggiornamenti all'immagine di base di un contenitore o i timer.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. Con i trigger di aggiornamento dell'immagine di base, ad esempio, è possibile automatizzare il flusso di lavoro di patch del sistema operativo e dell'applicazione, mantenendo gli ambienti protetti rispettando al contempo i principi dei contenitori non modificabili.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.

Scenari di attivitàTask scenarios

Le attività ACR supportano diversi scenari per la creazione e la gestione di immagini del contenitore e altri elementi.ACR Tasks supports several scenarios to build and maintain container images and other artifacts. Per informazioni dettagliate, vedere le sezioni seguenti di questo articolo.See the following sections in this article for details.

A ogni attività ACR è associato un contesto del codice sorgente , ovvero la posizione di un set di file di origine usati per compilare un'immagine del contenitore o un altro artefatto.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. I contesti di esempio includono un repository git o un file system locale.Example contexts include a Git repository or a local filesystem.

Le attività possono inoltre sfruttare le variabili Run, in modo da poter riutilizzare le definizioni delle attività e standardizzare i tag per le immagini e gli artefatti.Tasks can also take advantage of run variables, so you can reuse task definitions and standardize tags for images and artifacts.

Attività rapidaQuick task

Il ciclo di sviluppo interno, processo iterativo di scrittura di codice, compilazione e test dell'applicazione prima di eseguire il commit nel controllo del codice sorgente, è in realtà l'inizio della gestione del ciclo di vita del contenitore.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.

Prima di eseguire il commit della prima riga di codice, la funzione attività rapida di Attività del Registro Azure Container può offrire un'esperienza di sviluppo integrato eseguendo l'offload delle build di un'immagine del contenitore in 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. Con questa funzionalità è possibile verificare le definizioni delle compilazioni automatiche e rilevare problemi potenziali prima di eseguire il commit di codice.With quick tasks, you can verify your automated build definitions and catch potential problems prior to committing your code.

Usando il formato di docker build familiare, il comando AZ ACR Build nell'interfaccia della riga di comando di Azure accetta un contesto (il set di file da compilare), invia le attività ACR e, per impostazione predefinita, effettua il push dell'immagine compilata al relativo registro al termine del completamento.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.

Per un'introduzione, vedere la Guida introduttiva per compilare ed eseguire un'immagine del contenitore in Azure container Registry.For an introduction, see the quickstart to build and run a container image in Azure Container Registry.

ACR Tasks è progettato come primitiva del ciclo di vita dei contenitori.ACR Tasks is designed as a container lifecycle primitive. È ad esempio possibile integrare ACR Tasks in una soluzione CI/CD.For example, integrate ACR Tasks into your CI/CD solution. Eseguendo AZ login con un' entità servizio, la soluzione ci/CD potrebbe quindi rilasciare i comandi AZ ACR Build per avviare le compilazioni di immagini.By executing az login with a service principal, your CI/CD solution could then issue az acr build commands to kick off image builds.

Per informazioni su come usare le attività rapide, vedere la prima esercitazione su Attività del Registro Azure Container, Compilare immagini dei contenitori nel cloud con Attività del Registro Azure Container.Learn how to use quick tasks in the first ACR Tasks tutorial, Build container images in the cloud with Azure Container Registry Tasks.

Suggerimento

Se si vuole compilare ed eseguire il push di un'immagine direttamente dal codice sorgente, senza Dockerfile, Azure Container Registry fornisce il comando AZ ACR Pack Build (anteprima).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). Questo strumento crea ed esegue il push di un'immagine dal codice sorgente dell'applicazione usando il cloud Buildpacks nativo.This tool builds and pushes an image from application source code using Cloud Native Buildpacks.

Attività trigger sull'aggiornamento del codice sorgenteTrigger task on source code update

Attivare una compilazione dell'immagine del contenitore o un'attività in più passaggi quando viene eseguito il commit del codice o una richiesta pull eseguita o aggiornata a un repository git pubblico o privato in GitHub o 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. Ad esempio, configurare un'attività di compilazione con il comando dell'interfaccia della riga di comando di Azure AZ ACR task create specificando un repository git e, facoltativamente, un Branch e 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. Quando il team aggiorna il codice nel repository, un webhook creato da un'attività ACR attiva una compilazione dell'immagine del contenitore definita nel repository.When your team updates code in the repository, an ACR Tasks-created webhook triggers a build of the container image defined in the repo.

Le attività ACR supportano i trigger seguenti quando si imposta un repository Git come contesto dell'attività:ACR Tasks supports the following triggers when you set a Git repo as the task's context:

TriggerTrigger Abilitato per impostazione predefinitaEnabled by default
CommitCommit Yes
Richiesta pullPull request NoNo

Per configurare un trigger di aggiornamento del codice sorgente, è necessario fornire all'attività un token di accesso personale (PAT) per impostare il webhook nel repository GitHub pubblico o privato o Azure DevOps.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.

Nota

Attualmente, le attività ACR non supportano i trigger di richiesta commit o pull nei repository di GitHub Enterprise.Currently, ACR Tasks doesn't support commit or pull request triggers in GitHub Enterprise repos.

Per informazioni su come attivare compilazioni in caso di commit del codice sorgente, vedere la seconda esercitazione su Attività del Registro Azure Container, Automatizzare la compilazione di immagini dei contenitori con Attività del Registro Azure Container.Learn how to trigger builds on source code commit in the second ACR Tasks tutorial, Automate container image builds with Azure Container Registry Tasks.

Automatizzare l'applicazione di patch al sistema operativo e al frameworkAutomate OS and framework patching

ACR Tasks può realmente migliorare il flusso di lavoro di compilazione dei contenitori grazie alla capacità di rilevare un aggiornamento di un'immagine di base.The power of ACR Tasks to truly enhance your container build workflow comes from its ability to detect an update to a base image. Quando viene effettuato il push dell'immagine di base aggiornata nel registro di sistema o un'immagine di base viene aggiornata in un repository pubblico, ad esempio in Docker Hub, le attività di ACR possono compilare automaticamente eventuali immagini dell'applicazione basate su di esso.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.

Le immagini dei contenitori possono essere suddivise in linea di massima in immagini di base e immagini di applicazioni.Container images can be broadly categorized into base images and application images. Le immagini di base includono in genere il sistema operativo e i framework applicazioni su cui è basata l'applicazione, insieme ad altre personalizzazioni.Your base images typically include the operating system and application frameworks upon which your application is built, along with other customizations. Queste immagini di base sono in genere basate su immagini upstream pubbliche, ad esempio Alpine Linux, Windows, .NETo node. js.These base images are themselves typically based on public upstream images, for example: Alpine Linux, Windows, .NET, or Node.js. Diverse immagini di applicazioni possono condividere un'immagine di base comune.Several of your application images might share a common base image.

Quando un'immagine del sistema operativo o del framework app viene aggiornata dal gestore upstream, ad esempio con una patch di sicurezza critica del sistema operativo, è necessario aggiornare anche le immagini di base in modo da includere l'aggiornamento critico.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. È quindi necessario anche ricompilare ogni immagine di applicazione per includere gli aggiornamenti upstream ora inclusi nell'immagine di base.Each application image must then also be rebuilt to include these upstream fixes now included in your base image.

Individuando dinamicamente le dipendenze dell'immagine di base durante la compilazione di un'immagine del contenitore, Attività del Registro Azure Container può rilevare l'aggiornamento dell'immagine di base di un'immagine di applicazione.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. Con un'attività di compilazione preconfigurata, ACR Tasks ricompila quindi automaticamente ogni immagine di applicazione.With one preconfigured build task, ACR Tasks then automatically rebuilds every application image for you. Grazie al rilevamento e alla ricompilazione automatici, ACR Tasks consente di risparmiare il tempo e il lavoro normalmente necessari per monitorare e aggiornare manualmente ogni immagine di applicazione che fa riferimento all'immagine di base aggiornata.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.

Per le compilazioni di immagini da un Dockerfile, un'attività ACR tiene traccia dell'aggiornamento di un'immagine di base quando l'immagine di base si trova in una delle posizioni seguenti: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:

  • La stessa istanza di Registro Azure Container in cui viene eseguita l'attivitàThe same Azure container registry where the task runs
  • Un'altra istanza di Registro Azure Container nella stessa areaAnother Azure container registry in the same region
  • Un repository pubblico in Docker HubA public repo in Docker Hub
  • Un repository pubblico in Registro contenitori di MicrosoftA public repo in Microsoft Container Registry

Nota

  • Il trigger di aggiornamento dell'immagine di base è abilitato per impostazione predefinita in un'attività ACR.The base image update trigger is enabled by default in an ACR task.
  • Attualmente, le attività ACR tengono traccia solo degli aggiornamenti delle immagini di base per le immagini dell'applicazione (Runtime).Currently, ACR Tasks only tracks base image updates for application (runtime) images. Le attività ACR non tengono traccia degli aggiornamenti delle immagini di base per le immagini intermedie (BuildTime) usate in dockerfile in più fasi.ACR Tasks doesn't track base image updates for intermediate (buildtime) images used in multi-stage Dockerfiles.

Per altre informazioni sull'applicazione di patch per il sistema operativo e il Framework, vedere la terza esercitazione sulle attività di ACR, automatizzare le compilazioni di immagini nell'aggiornamento dell'immagine di base con container Registry AzureLearn more about OS and framework patching in the third ACR Tasks tutorial, Automate image builds on base image update with Azure Container Registry Tasks.

Pianificare un'attivitàSchedule a task

Facoltativamente, pianificare un'attività impostando uno o più trigger timer quando si crea o si aggiorna l'attività.Optionally schedule a task by setting up one or more timer triggers when you create or update the task. La pianificazione di un'attività è utile per l'esecuzione di carichi di lavoro del contenitore in base a una pianificazione definita o per l'esecuzione di operazioni di manutenzione o di test su immagini con push regolari nel registro.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. Per informazioni dettagliate, vedere eseguire un'attività ACR in base a una pianificazione definita.For details, see Run an ACR task on a defined schedule.

Attività in più passaggiMulti-step tasks

Le attività in più passaggi forniscono la definizione e l'esecuzione di attività basate sui passaggi per la compilazione, il test e l'applicazione di patch alle immagini del contenitore nel cloud.Multi-step tasks provide step-based task definition and execution for building, testing, and patching container images in the cloud. I passaggi dell'attività definiti in un file YAML specificano le singole operazioni di compilazione e push per le immagini del contenitore o altri artefatti.Task steps defined in a YAML file specify individual build and push operations for container images or other artifacts. Possono anche definire l'esecuzione di uno o più contenitori, in cui ogni passaggio usa il contenitore come ambiente di esecuzione.They can also define the execution of one or more containers, with each step using the container as its execution environment.

Ad esempio, è possibile creare un'attività in più passaggi che consenta di automatizzare le operazioni seguenti:For example, you can create a multi-step task that automates the following:

  1. Compilare un'immagine dell'applicazione WebBuild a web application image
  2. Eseguire il contenitore dell'applicazione WebRun the web application container
  3. Compilare un'immagine di test dell'applicazione WebBuild a web application test image
  4. Eseguire il contenitore di test dell'applicazione Web, che esegue i test sul contenitore di applicazioni in esecuzioneRun the web application test container, which performs tests against the running application container
  5. Se i test vengono superati, compilare un pacchetto di archivio del grafico di HelmIf the tests pass, build a Helm chart archive package
  6. Eseguire un helm upgrade usando il nuovo pacchetto di archivio del grafico di HelmPerform a helm upgrade using the new Helm chart archive package

Le attività in più passaggi consentono di dividere la creazione, l'esecuzione e il test di un'immagine in più passaggi componibili, con il supporto della dipendenza tra i passaggi.Multi-step tasks enable you to split the building, running, and testing of an image into more composable steps, with inter-step dependency support. Con le attività in più passaggi in ACR Tasks si dispone di un controllo più granulare sulla compilazione delle immagini, sui test e sui flussi di lavoro di applicazione di patch al framework e al sistema operativo.With multi-step tasks in ACR Tasks, you have more granular control over image building, testing, and OS and framework patching workflows.

Altre informazioni sulle attività in più passaggi in Run multi-step build, test, and patch tasks in ACR Tasks (Eseguire attività di compilazione, test e applicazione di patch in più passaggi con ACR Tasks).Learn about multi-step tasks in Run multi-step build, test, and patch tasks in ACR Tasks.

Percorsi del contestoContext locations

La tabella seguente mostra alcuni esempi di percorsi di contesto supportati per ACR Tasks:The following table shows a few examples of supported context locations for ACR Tasks:

Posizione contestoContext location DescriptionDescription EsempioExample
File system localeLocal filesystem File contenuti in una directory nel file System locale.Files within a directory on the local filesystem. /home/user/projects/myapp
Ramo master GitHubGitHub master branch File nel ramo master (o un altro valore predefinito) di un repository GitHub pubblico o privato.Files within the master (or other default) branch of a public or private GitHub repository. https://github.com/gituser/myapp-repo.git
Ramo GitHubGitHub branch Ramo specifico di un repository GitHub pubblico o privato.Specific branch of a public or private GitHub repo. https://github.com/gituser/myapp-repo.git#mybranch
Sottocartella di GitHubGitHub subfolder File all'interno di una sottocartella in un repository GitHub pubblico o privato.Files within a subfolder in a public or private GitHub repo. Esempio mostra la combinazione di una specifica di Branch e sottocartella.Example shows combination of a branch and subfolder specification. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
Sottocartella DevOps di AzureAzure DevOps subfolder File all'interno di una sottocartella in un repository di Azure pubblico o privato.Files within a subfolder in a public or private Azure repo. Esempio mostra la combinazione di specifiche di Branch e sottocartelle.Example shows combination of branch and subfolder specification. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
File tarball remotoRemote tarball File in un archivio compresso in un server Web remoto.Files in a compressed archive on a remote webserver. http://remoteserver/myapp.tar.gz

Nota

Quando si usa un repository git privato come contesto per un'attività, è necessario fornire un token di accesso personale (PAT).When using a private Git repo as a context for a task, you need to provide a personal access token (PAT).

Piattaforme immagineImage platforms

Per impostazione predefinita, le attività ACR compilano immagini per il sistema operativo Linux e l'architettura amd64.By default, ACR Tasks builds images for the Linux OS and the amd64 architecture. Specificare il tag --platform per compilare immagini Windows o immagini Linux per altre architetture.Specify the --platform tag to build Windows images or Linux images for other architectures. Specificare il sistema operativo e, facoltativamente, un'architettura supportata nel formato del sistema operativo/architettura, ad esempio --platform Linux/arm.Specify the OS and optionally a supported architecture in OS/architecture format (for example, --platform Linux/arm). Per le architetture ARM, è possibile specificare facoltativamente una variante nel formato sistema operativo/architettura/variante (ad esempio, --platform Linux/arm64/v8):For ARM architectures, optionally specify a variant in OS/architecture/variant format (for example, --platform Linux/arm64/v8):

Sistema operativoOS ArchitectureArchitecture
LinuxLinux amd64amd64
armarm
arm64arm64
386386
WindowsWindows amd64amd64

Visualizzare i log delle attivitàView task logs

Ogni esecuzione di attività genera l'output del log che è possibile esaminare per determinare se i passaggi dell'attività sono stati eseguiti correttamente.Each task run generates log output that you can inspect to determine whether the task steps ran successfully. Se si usa il comando AZ ACR Build, AZ ACR Runo AZ ACR task run per attivare l'attività, l'output del log per l'esecuzione dell'attività viene trasmesso alla console e archiviato anche per un successivo recupero.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. Quando un'attività viene attivata automaticamente, ad esempio da un commit del codice sorgente o da un aggiornamento di un'immagine di base, i log delle attività vengono archiviati solo.When a task is automatically triggered, for example by a source code commit or a base image update, task logs are only stored. Visualizzare i log per un'attività eseguita nel portale di Azure o usare il comando AZ ACR Task logs .View the logs for a task run in the Azure portal, or use the az acr task logs command.

Per impostazione predefinita, i dati e i log per le esecuzioni delle attività in un registro vengono conservati per 30 giorni e quindi eliminati automaticamente.By default, data and logs for task runs in a registry are retained for 30 days and then automatically purged. Se si vogliono archiviare i dati per un'esecuzione di attività, abilitare l'archiviazione usando il comando AZ ACR task update-Run .If you want to archive the data for a task run, enable archiving using the az acr task update-run command. Nell'esempio seguente viene abilitata l'archiviazione per l'esecuzione dell'attività CF11 nel registro disistema del registro di sistema.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

Passaggi successiviNext steps

Quando si è pronti per automatizzare le compilazioni e la manutenzione delle immagini del contenitore nel cloud, vedere la serie di esercitazioni sulle attività ACR.When you're ready to automate container image builds and maintenance in the cloud, check out the ACR Tasks tutorial series.

Installare eventualmente l'estensione Docker per Visual Studio Code e l'estensione Account Azure per l'uso dei registri contenitori di Azure.Optionally install the Docker Extension for Visual Studio Code and the Azure Account extension to work with your Azure container registries. Eseguire il pull e il push delle immagini in un registro contenitori di Azure o eseguire Attività del Registro Azure Container, il tutto all'interno di Visual Studio Code.Pull and push images to an Azure container registry, or run ACR Tasks, all within Visual Studio Code.