Inicio rápido: Compilación de una imagen
Azure Pipelines
Introducción a las imágenes de contenedor mediante Azure Pipelines para compilar una imagen. Todo lo que necesita para compilar una imagen es un Dockerfile en el repositorio.
Puede compilar contenedores linux y Windows en función del agente que use en la canalización. Una vez compilada una imagen, puede insertarla en Azure Container Registry, Docker Hub y Google Container Registry. Consulte Inserción de una imagen para obtener más información sobre cómo insertar imágenes en registros de contenedor.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Una cuenta de GitHub. Si no tiene ninguna, regístrese gratis.
- Un GitHub con un Dockerfile. Si no tiene un repositorio para usar, bifurca este repositorio que contiene una aplicación de ejemplo y un Dockerfile:
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Compilación de una imagen de Linux Windows virtual
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Vaya a Pipelinesy, a continuación, seleccione Nueva canalización.
Seleccione GitHub como ubicación del código fuente y seleccione el repositorio.
Nota
Puede que se le redirija a GitHub para iniciar sesión. Si es así, escriba sus credenciales de GitHub. Es posible que se le redirija a GitHub para instalar la aplicación Azure Pipelines. Si es así, seleccione Aprobar e instalar.
Seleccione Canalización inicial. Reemplace el contenido de azure-pipelines.yml por este código. Si va a compilar una aplicación de Linux, use
ubuntu-1604paravmImage. Puede usarwindows-latestpara su paravmImageWindows.trigger: - main pool: vmImage: 'ubuntu-latest' # set to windows-latest or another Windows vmImage for Windows builds variables: imageName: 'pipelines-javascript-docker' steps: - task: Docker@2 displayName: Build an image inputs: repository: $(imageName) command: build Dockerfile: app/DockerfileWindows crear imágenes de contenedor mediante agentes de Windows hospedados por Microsoft o agentes auto-hospedados basados en la plataforma Windows (todos los agentes basados en la plataforma Windows hospedados por Microsoft se envían con el motor moby y el cliente necesarios para las compilaciones de Docker). Las imágenes de contenedor de Linux se pueden crear mediante agentes Ubuntu hospedados por Microsoft o agentes auto-hospedados basados en la plataforma Linux. Obtenga más información sobre las opciones Windows agente linux disponibles con los agentes hospedados de Microsoft.
Nota
Actualmente, los agentes macOS hospedados por Microsoft no se pueden usar para compilar imágenes de contenedor, ya que el motor moby necesario para compilar las imágenes no está preinstalado en estos agentes.
Seleccione Guardar y ejecutar. Verá un mensaje para agregar un mensaje de confirmación al
azure-pipelines.ymlagregarlo al repositorio. Edite el mensaje y, a continuación, seleccione Guardar y ejecutar de nuevo para ver la canalización en acción.Sugerencia
Obtenga más información sobre cómo insertar la imagen en Azure Container Registryo insertarla en otros registros de contenedor, como Google Container Registry o Docker Hub. Obtenga más información sobre la tarea de Docker usada en el ejemplo anterior. En lugar de usar la tarea de Docker recomendada, también es posible invocar comandos de Docker directamente mediante una tarea de línea de comandos(script)
Limpieza de recursos
Si no va a seguir usando esta aplicación, elimine la canalización y el repositorio de código.
Preguntas más frecuentes
¿Qué imágenes almacenadas previamente en caché están disponibles en los agentes hospedados?
Algunas imágenes de uso frecuente se almacenan previamente en caché en agentes hospedados por Microsoft para evitar largos intervalos de tiempo dedicados a extraer estas imágenes del registro de contenedor para cada trabajo. La lista de imágenes almacenadas previamente en caché está disponible en las notas de la versión del repositorio azure-pipelines-image-generation.
Cómo establecer la variable BuildKit para mis compilaciones de Docker?
BuildKit presenta mejoras de compilación en las áreas de rendimiento, administración de almacenamiento, funcionalidad de características y seguridad. Para habilitar compilaciones de Docker basadas en BuildKit, establezca DOCKER_BUILDKIT variable.
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
imageName: 'pipelines-javascript-docker'
DOCKER_BUILDKIT: 1
steps:
- task: Docker@2
displayName: Build an image
inputs:
repository: $(imageName)
command: build
Dockerfile: app/Dockerfile
Nota
BuildKit no se admite actualmente en Windows hosts.
¿Cómo puedo usar un agente auto-hospedado?
Debe tener Docker instalado en la máquina auto hospedada antes de crear una imagen de contenedor. Agregue la tarea del instalador de Docker en la canalización antes de la tarea de Docker que compila la imagen.
¿Cómo puedo crear una compilación de Docker basada en script en lugar de usar la tarea de Docker?
Puede usar el comando build (o cualquier otro comando de Docker).
docker build -f Dockerfile -t foobar.azurecr.io/hello:world .
Este comando crea una imagen equivalente a una creada con la tarea de Docker. La propia tarea de Docker llama internamente al archivo binario de Docker en un script y también une algunos comandos más para proporcionar algunas ventajas más. Obtenga más información en la documentación de la tarea de Docker.
¿Es posible volver a utilizar el almacenamiento en caché de capas durante las compilaciones Azure Pipelines?
En el diseño actual de los agentes hospedados por Microsoft, cada trabajo se envía a una máquina virtual recién aprovisionada (en función de la imagen generada a partir de plantillas de repositorio azure-pipelines-image-generation). Estas máquinas virtuales se limpian una vez que el trabajo finaliza, no se conservan y, por tanto, no se pueden reutilizar para los trabajos posteriores. La naturaleza efímera de las máquinas virtuales impide la reutilización de capas de Docker almacenadas en caché.
Sin embargo, puede almacenar en caché capas de Docker con agentes auto-hospedados porque el problema de duración efímera no es aplicable a estos agentes.
¿Cómo compilar imágenes de contenedor de Linux para arquitecturas que no son x64?
Cuando se usan agentes de Linux hospedados por Microsoft, se crean imágenes de contenedor de Linux para la arquitectura x64. Para crear imágenes para otras arquitecturas (por ejemplo, x86 o ARM), puede usar un emulador de máquina como QEMU. En los pasos siguientes se muestra cómo crear una imagen de contenedor de ARM mediante QEMU:
Cree el Dockerfile con una imagen base que coincida con la arquitectura de destino:
FROM arm64v8/alpine:latestEjecute el siguiente script en el trabajo antes de compilar la imagen:
# register QEMU binary - this can be done by running the following image docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # build your image
Para obtener más información, vea qemu-user-static en GitHub.
¿Cómo ejecutar pruebas y publicar resultados de pruebas para aplicaciones en contenedores?
Para ver diferentes opciones sobre cómo probar aplicaciones en contenedores y publicar los resultados de pruebas resultantes, consulte Publicar Resultados de pruebas tarea.
Pasos siguientes
Avance al siguiente artículo para aprender a insertar una imagen en un registro de contenedor.