Automatización de compilaciones y mantenimiento de imágenes de contenedor con ACR TasksAutomate container image builds and maintenance with ACR Tasks

Los contenedores proporcionan nuevos niveles de virtualización, que aíslan las dependencias de aplicaciones y desarrolladores de los requisitos operativos y la infraestructura.Containers provide new levels of virtualization, isolating application and developer dependencies from infrastructure and operational requirements. Sin embargo, lo que permanece es la necesidad de abordar cómo se administran y aplican las revisiones de esta virtualización de aplicaciones en el ciclo de vida del contenedor.What remains, however, is the need to address how this application virtualization is managed and patched over the container lifecycle.

¿Qué es ACR Tasks?What is ACR Tasks?

ACR Tasks es un conjunto de características que se encuentran en Azure Container Registry.ACR Tasks is a suite of features within Azure Container Registry. Proporciona la compilación de imágenes de contenedor basadas en la nube para plataformas, como Linux, Windows y ARM, y puede automatizar las revisiones de marco y sistema operativo para los contenedores de 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 no solo amplía el ciclo de desarrollo del "bucle interno" a la nube con compilaciones de imágenes de contenedor a petición, sino que también permite compilaciones automatizadas desencadenadas por actualizaciones del código fuente, actualizaciones en una imagen base del contenedor o temporizadores.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. Por ejemplo, con los desencadenadores de actualización de imágenes base, puede automatizar el flujo de trabajo de aplicación de revisiones de sistema operativo y de marco de trabajo de la aplicación, y mantener los entornos seguros al tiempo que se respetan los principios de los contenedores inmutables.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.

Escenarios de tareasTask scenarios

ACR Tasks admite varios escenarios para compilar y mantener imágenes de contenedor y otros artefactos.ACR Tasks supports several scenarios to build and maintain container images and other artifacts. Para obtener más información, consulte las siguientes secciones de este artículo.See the following sections in this article for details.

Cada tarea de ACR tiene un contexto de código fuente asociado (la ubicación de un conjunto de archivos de código fuente que se usa para compilar una imagen de contenedor u otro artefacto).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. Los ejemplos de contextos incluyen un repositorio GIT o un sistema de archivos local.Example contexts include a Git repository or a local filesystem.

Las tareas también pueden sacar provecho de las variables de ejecución, de modo que puede volver a usar las definiciones de tareas y estandarizar las etiquetas para las imágenes y los artefactos.Tasks can also take advantage of run variables, so you can reuse task definitions and standardize tags for images and artifacts.

Tarea rápidaQuick task

El ciclo de desarrollo de bucle interno, el proceso iterativo de escribir código, compilar y probar la aplicación antes de confirmar el control de código fuente, es realmente el comienzo de la administración del ciclo de vida del contenedor.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.

Antes de confirmar la primera línea de código, la característica de tareas rápidas de ACR Tasks puede proporcionar una experiencia de desarrollo integrado mediante la descarga de compilaciones de imágenes de contenedor en 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 tareas rápidas, puede comprobar sus definiciones de compilación automatizadas y detectar posibles problemas antes de confirmar el código.With quick tasks, you can verify your automated build definitions and catch potential problems prior to committing your code.

Mediante el conocido formato docker build, el comando az acr build de la CLI de Azure toma un contexto (el conjunto de archivos que se van a compilar), lo envía a ACR Tasks y, de forma predeterminada, inserta la imagen compilada en su registro tras completarse.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.

A modo de introducción, vea el inicio rápido de compilación y ejecución de una imagen de contenedor en Azure Container Registry.For an introduction, see the quickstart to build and run a container image in Azure Container Registry.

ACR Tasks está diseñado como un primitivo de ciclo de vida de contenedor.ACR Tasks is designed as a container lifecycle primitive. Por ejemplo, puede integrar ACR Tasks en su solución de CI/CD.For example, integrate ACR Tasks into your CI/CD solution. Al ejecutar az login con una entidad de servicio, la solución de CI/CD podría emitir entonces comandos az acr build para iniciar las compilaciones de imágenes.By executing az login with a service principal, your CI/CD solution could then issue az acr build commands to kick off image builds.

Aprenda a usar tareas rápidas en el primer tutorial de ACR Tasks: Compilación de imágenes de contenedor en la nube con 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.

Sugerencia

Si quiere compilar e insertar una imagen directamente desde el código fuente, sin ningún archivo Dockerfile, Azure Container Registry proporciona el comando az acr pack build (versión preliminar).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). Esta herramienta compila e inserta una imagen del código fuente de la aplicación mediante Cloud Native Buildpacks.This tool builds and pushes an image from application source code using Cloud Native Buildpacks.

Desencadenamiento de una tarea al actualizar el código fuenteTrigger task on source code update

Desencadene una compilación de imágenes de contenedor o una tarea de varios pasos cuando se confirme el código o bien se actualice o realice una solicitud de incorporación de cambios, en un repositorio de Git público o privado en 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. Por ejemplo, configure una tarea de compilación con el comando az acr task create de la CLI de Azure. Para ello, especifique un repositorio de GIT y, si quiere, una rama y un archivo 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. Cuando el equipo actualiza el código en el repositorio, un webhook creado por ACR Tasks desencadena una compilación de la imagen de contenedor definida en el repositorio.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 admite los siguientes desencadenadores cuando establece un repositorio de GIT como el contexto de la tarea:ACR Tasks supports the following triggers when you set a Git repo as the task's context:

DesencadenadorTrigger Habilitado de forma predeterminadaEnabled by default
CommitCommit Yes
Solicitud de incorporación de cambiosPull request NoNo

Para configurar el desencadenador de actualización de código fuente, debe proporcionar un token de acceso personal (PAT) a la tarea para establecer el webhook en el repositorio de GitHub público o privado o el repositorio de 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

Actualmente, ACR Tasks no admite desencadenadores de solicitud de confirmación o de extracción en repositorios de GitHub Enterprise.Currently, ACR Tasks doesn't support commit or pull request triggers in GitHub Enterprise repos.

Aprenda a desencadenar compilaciones tras la confirmación del código fuente en el segundo tutorial de ACR Tasks: Automatización de compilaciones de imágenes de contenedor con 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.

Automatización de aplicación de revisiones de sistema operativo y marcoAutomate OS and framework patching

La eficacia de ACR Tasks para mejorar verdaderamente el flujo de trabajo de compilación del contenedor procede de su capacidad para detectar una actualización de una imagen 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. Una imagen base, que es una característica de la mayoría de las imágenes de contenedor, es una imagen primaria en la que se basan una o varias imágenes de aplicación.A feature of most container images, a base image is a parent image on which one or more application images are based. Normalmente, las imágenes base contienen el sistema operativo y, a veces, marcos de trabajo de la aplicación.Base images typically contain the operating system, and sometimes application frameworks.

Puede configurar una instancia de ACR Tasks para realizar el seguimiento de una dependencia de una imagen base al compilar una imagen de aplicación.You can set up an ACR task to track a dependency on a base image when it builds an application image. Cuando la imagen base actualizada se inserta en el registro, o una imagen base se actualiza en un repositorio público, como en Docker Hub, ACR Tasks puede compilar automáticamente cualquier imagen de aplicación basada en ella.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. Gracias a esta detección y recompilación automáticas, ACR Tasks le ahorra tiempo y esfuerzo que normalmente son necesarios para actualizar y realizar el seguimiento de forma manual de cada una de las imágenes de aplicación que hacen referencia a la imagen base actualizada.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.

Obtenga más información sobre desencadenadores de actualización de imágenes base para ACR Tasks.Learn more about base image update triggers for ACR Tasks. Además, aprenda a desencadenar una compilación de imagen al insertar una imagen base en un registro de contenedor en el tutorial Automatización de compilaciones de imágenes de contenedor al actualizarse una imagen base en una instancia de Azure Container Registry.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

Programación de una tareaSchedule a task

Puede programar una tarea mediante la configuración de uno o más desencadenadores de temporizador al crear o actualizar la tarea.Optionally schedule a task by setting up one or more timer triggers when you create or update the task. La programación de una tarea resulta útil para ejecutar cargas de trabajo de contenedor según una programación definida o para ejecutar operaciones de mantenimiento o pruebas en imágenes insertadas periódicamente en el 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. Para obtener detalles, consulte Ejecución de una tarea de ACR según una programación definida.For details, see Run an ACR task on a defined schedule.

Tareas de varios pasosMulti-step tasks

Las tareas con varios pasos proporcionan definición y ejecución de tareas basadas en pasos para compilar y probar imágenes de contenedor en la nube, y aplicarles revisiones.Multi-step tasks provide step-based task definition and execution for building, testing, and patching container images in the cloud. Los pasos de la tarea definidos en un archivo YAML especifican operaciones de compilación e inserción individuales para imágenes de contenedor u otros artefactos.Task steps defined in a YAML file specify individual build and push operations for container images or other artifacts. También pueden definir la ejecución de uno o más contenedores, donde cada paso utiliza el contenedor como su entorno de ejecución.They can also define the execution of one or more containers, with each step using the container as its execution environment.

Por ejemplo, puede crear una tarea de varios pasos que automatice lo siguiente:For example, you can create a multi-step task that automates the following:

  1. Crear una imagen de aplicación webBuild a web application image
  2. Ejecutar el contenedor de aplicaciones webRun the web application container
  3. Crear una imagen de prueba de aplicación webBuild a web application test image
  4. Ejecutar el contenedor de prueba de aplicaciones web, que realiza pruebas en el contenedor de aplicaciones en ejecuciónRun the web application test container, which performs tests against the running application container
  5. Si se superan las pruebas, compilar un paquete de archivo de gráfico de HelmIf the tests pass, build a Helm chart archive package
  6. Realizar una acción helm upgrade con el nuevo paquete de archivo de gráfico de HelmPerform a helm upgrade using the new Helm chart archive package

Las tareas de varios pasos permiten dividir la compilación, la ejecución y la prueba de una imagen en más pasos que admiten composición, con compatibilidad con dependencias entre pasos.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 las tareas de varios pasos de ACR Tasks, tiene control más pormenorizado sobre los flujos de trabajo de compilación, prueba y aplicación de revisiones para imágenes de sistema operativo y plataforma.With multi-step tasks in ACR Tasks, you have more granular control over image building, testing, and OS and framework patching workflows.

Aprenda más sobre las tareas de varios pasos en Ejecución de tareas de varios pasos de compilación, prueba y aplicación de revisiones en ACR Tasks.Learn about multi-step tasks in Run multi-step build, test, and patch tasks in ACR Tasks.

Ubicaciones de contextoContext locations

En la tabla siguiente se muestran algunos ejemplos de ubicaciones de contexto admitidas en ACR Tasks:The following table shows a few examples of supported context locations for ACR Tasks:

Ubicación de contextoContext location DescripciónDescription EjemploExample
Sistema de archivos localLocal filesystem Archivos en un directorio en el sistema de archivos local.Files within a directory on the local filesystem. /home/user/projects/myapp
Rama maestra de GitHubGitHub master branch Archivos dentro de la rama maestra (u otra predeterminada) de un repositorio de GitHub público o privado.Files within the master (or other default) branch of a public or private GitHub repository. https://github.com/gituser/myapp-repo.git
Rama de GitHubGitHub branch Rama específica de un repositorio de GitHub público o privado.Specific branch of a public or private GitHub repo. https://github.com/gituser/myapp-repo.git#mybranch
Subcarpeta de GitHubGitHub subfolder Archivos en una subcarpeta en un repositorio de GitHub público o privado.Files within a subfolder in a public or private GitHub repo. En el ejemplo se muestra la combinación de una rama y una especificación de subcarpeta.Example shows combination of a branch and subfolder specification. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
Confirmación de GitHubGitHub commit Confirmación específica en un repositorio de GitHub público o privado.Specific commit in a public or private GitHub repo. En el ejemplo se muestra la combinación de un valor hash de confirmación (SHA) y una especificación de subcarpeta.Example shows combination of a commit hash (SHA) and subfolder specification. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Subcarpeta de Azure DevOpsAzure DevOps subfolder Archivos en una subcarpeta en un repositorio de Azure público o privado.Files within a subfolder in a public or private Azure repo. En el ejemplo se muestra la combinación de una rama y una especificación de subcarpeta.Example shows combination of branch and subfolder specification. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Tarball remotoRemote tarball Archivos en un archivo comprimido en un servidor web remoto.Files in a compressed archive on a remote webserver. http://remoteserver/myapp.tar.gz

Nota

Al usar un repositorio de Git privado como contexto para una tarea, debe proporcionar un token de acceso personal (PAT).When using a private Git repo as a context for a task, you need to provide a personal access token (PAT).

Plataformas de imagenImage platforms

De forma predeterminada, ACR Tasks compila imágenes para el sistema operativo Linux y la arquitectura AMD64.By default, ACR Tasks builds images for the Linux OS and the amd64 architecture. Especifique la etiqueta --platform para compilar imágenes de Windows o imágenes de Linux para otras arquitecturas.Specify the --platform tag to build Windows images or Linux images for other architectures. Especifique el sistema operativo y, opcionalmente, una arquitectura admitida en formato de arquitectura o sistema operativo (por ejemplo,--platform Linux/arm).Specify the OS and optionally a supported architecture in OS/architecture format (for example, --platform Linux/arm). En el caso de las arquitecturas ARM, especifique opcionalmente una variante en formato de sistema operativo,arquitectura o variante (por ejemplo,--platform Linux/arm64/v8):For ARM architectures, optionally specify a variant in OS/architecture/variant format (for example, --platform Linux/arm64/v8):

SOOS ArchitectureArchitecture
LinuxLinux AMD64amd64
ARMarm
ARM64arm64
386386
WindowsWindows AMD64amd64

Visualización de la salida de la tareaView task output

Las ejecuciones de las tareas generan un resultado de registro que se puede examinar para determinar si los pasos de dicha tarea se han ejecutado correctamente.Each task run generates log output that you can inspect to determine whether the task steps ran successfully. Cuando se desencadena una tarea manualmente, la salida del registro de la ejecución de la tarea se transmite a la consola y también se almacena para su posterior recuperación.When you trigger a task manually, log output for the task run is streamed to the console and also stored for later retrieval. Cuando una tarea se desencadena automáticamente, por ejemplo, mediante una confirmación de código fuente o una actualización de imagen base, los registros de tareas solo se almacenan.When a task is automatically triggered, for example by a source code commit or a base image update, task logs are only stored. Puede ver los registros de ejecución en Azure Portal o usar el comando az acr task logs.View the run logs in the Azure portal, or use the az acr task logs command.

Más información sobre ver y administrar registros de tareas.See more about viewing and managing task logs.

Pasos siguientesNext steps

Cuando esté listo para automatizar las compilaciones y el mantenimiento de imágenes de contenedor en la nube, consulte la serie de tutoriales de ACR Tasks.When you're ready to automate container image builds and maintenance in the cloud, check out the ACR Tasks tutorial series.

Opcionalmente, instale la extensión de Docker para Visual Studio Code y la extensión de la cuenta de Azure para trabajar con los registros de contenedor de Azure.Optionally install the Docker Extension for Visual Studio Code and the Azure Account extension to work with your Azure container registries. Extraiga e inserte imágenes en un registro de contenedor de Azure o ejecute ACR Tasks y, todo ello, en Visual Studio Code.Pull and push images to an Azure container registry, or run ACR Tasks, all within Visual Studio Code.