Cómo usar el comando docker buildx history logs para ver registros de compilación

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás a utilizar el comando docker buildx history logs para visualizar los registros (logs) de tus construcciones (builds) en Docker. Comenzarás construyendo una imagen de Docker y examinando su historial para comprender el proceso de construcción e identificar la referencia de compilación (build reference).

Luego, utilizarás la referencia de compilación para recuperar y visualizar los registros detallados de una compilación específica. Finalmente, explorarás cómo ver estos registros de compilación con diferentes tipos de salida de progreso (progress output types), lo que proporcionará información sobre la ejecución de la compilación y ayudará a solucionar posibles problemas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/logs("View Container Logs") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/logs -.-> lab-555052{{"Cómo usar el comando docker buildx history logs para ver registros de compilación"}} docker/images -.-> lab-555052{{"Cómo usar el comando docker buildx history logs para ver registros de compilación"}} docker/build -.-> lab-555052{{"Cómo usar el comando docker buildx history logs para ver registros de compilación"}} end

Construir una imagen y ver su historial

En este paso, aprenderás cómo construir una imagen Docker a partir de un Dockerfile y ver su historial. El historial muestra las capas (layers) que componen la imagen y los comandos utilizados para crear cada capa.

Primero, creemos un Dockerfile simple en tu directorio ~/project. Este Dockerfile creará una imagen basada en la imagen ubuntu e instalará el paquete curl.

cd ~/project
nano Dockerfile

Añade el siguiente contenido al Dockerfile:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl

Guarda el archivo y cierra el editor (Ctrl+X, Y, Enter).

Ahora, construyamos la imagen Docker usando el comando docker build. Etiquetaremos la imagen con el nombre my-ubuntu-curl y la etiqueta latest. El . al final del comando indica que el Dockerfile está en el directorio actual.

docker build -t my-ubuntu-curl:latest .

Verás una salida que indica el proceso de construcción, mostrando cada paso definido en el Dockerfile siendo ejecutado.

Una vez completada la construcción, puedes ver el historial de la imagen usando el comando docker history.

docker history my-ubuntu-curl:latest

La salida mostrará una tabla con información sobre cada capa, incluyendo el ID de la capa, tiempo de creación, tamaño y el comando utilizado para crearla. Este historial es útil para entender cómo se construyó una imagen y para propósitos de depuración.

Encontrar la referencia de compilación (build reference) del historial

En el paso anterior, construiste una imagen Docker y viste su historial. La salida del historial incluye una columna "BUILD REFERENCE". Esta referencia es un identificador único para el proceso de compilación que creó la imagen. Es diferente del ID de la imagen y está específicamente relacionado con la compilación en sí, no con las capas resultantes de la imagen.

Veamos nuevamente el historial para identificar la referencia de compilación.

docker history my-ubuntu-curl:latest

En la salida, busca la línea correspondiente al proceso de compilación. Normalmente será la primera línea (excluyendo las capas de la imagen base) y tendrá un valor en la columna "BUILD REFERENCE". Este valor es una cadena larga de caracteres.

Por ejemplo, la salida podría verse así (los valores exactos variarán):

IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT   BUILD REFERENCE
a1b2c3d4e5f6   2 hours ago    /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
g7h8i9j0k1l2   2 hours ago    /bin/sh -c #(nop) ADD file:abcdef1234567890...   73.9MB
m3n4o5p6q7r8   2 hours ago    /bin/sh -c apt-get update && apt-get install...   30MB      buildkit.dockerfile.v0   buildkit:abcdef1234567890abcdef1234567890

En este ejemplo, la referencia de compilación es buildkit:abcdef1234567890abcdef1234567890. Nota que la referencia de compilación suele comenzar con buildkit: seguido de un identificador único.

Necesitarás esta referencia de compilación en el siguiente paso para ver los registros (logs) del proceso de compilación específico. Copia la referencia de compilación de tu salida.

Ver los registros (logs) de una compilación específica usando su referencia

En el paso anterior, identificaste la referencia de compilación (build reference) del historial de la imagen. Esta referencia te permite ver los registros detallados de ese proceso de compilación específico. Esto es particularmente útil para depurar fallos en la compilación o entender la salida exacta generada durante el proceso.

Para ver los registros de una compilación específica, usa el comando docker buildx logs seguido de la referencia de compilación. Recuerda reemplazar YOUR_BUILD_REFERENCE con la referencia real que encontraste en el paso anterior.

docker buildx logs YOUR_BUILD_REFERENCE

Por ejemplo, si tu referencia de compilación fue buildkit:abcdef1234567890abcdef1234567890, el comando sería:

docker buildx logs buildkit:abcdef1234567890abcdef1234567890

Al ejecutar este comando se mostrará la salida completa del proceso de compilación, incluyendo la salida de cada instrucción RUN en tu Dockerfile. Verás la salida de apt-get update y apt-get install -y curl tal como se ejecutaron durante la construcción de la imagen.

Esto proporciona una vista mucho más detallada del proceso de compilación en comparación con el resumen mostrado durante el comando docker build.

Ver registros con diferentes tipos de salida de progreso

En este paso, explorarás diferentes formas de visualizar la salida de progreso al construir una imagen Docker. El comando docker build ofrece varias opciones para controlar cómo se muestra el progreso de la compilación.

Por defecto, docker build utiliza una salida de progreso que muestra el estado de cada paso mientras se ejecuta. Reconstruyamos la imagen para ver esta salida predeterminada nuevamente.

docker build -t my-ubuntu-curl:latest .

Observarás la salida familiar mostrando pasos como "Step 1/2", "Step 2/2", y la salida del comando RUN.

Ahora probemos un tipo diferente de salida de progreso usando el flag --progress. El tipo plain muestra el proceso de compilación en un formato más detallado, línea por línea, lo que puede ser útil para ver exactamente qué comandos se ejecutan y su salida sin la barra de progreso.

docker build --progress=plain -t my-ubuntu-curl:latest .

Compara la salida de este comando con la salida predeterminada. Verás un registro más detallado de cada acción realizada durante la compilación.

Otro tipo útil de salida de progreso es tty. Este es el predeterminado cuando se construye interactivamente en una terminal y proporciona una barra de progreso dinámica. Sin embargo, especificarlo explícitamente puede ser útil en ciertos escenarios de scripting.

docker build --progress=tty -t my-ubuntu-curl:latest .

Deberías ver nuevamente la barra de progreso interactiva, similar a la compilación inicial.

Entender estos diferentes tipos de salida de progreso te permite elegir la mejor forma de monitorear tus compilaciones Docker, ya sea que necesites un resumen conciso o registros detallados para depuración.

Resumen

En este laboratorio, aprendiste cómo construir una imagen Docker a partir de un Dockerfile y ver su historial utilizando los comandos docker build y docker history. Creaste un Dockerfile simple, construiste una imagen etiquetada como my-ubuntu-curl:latest y examinaste la salida del historial para comprender las capas y comandos involucrados en el proceso de construcción.

Luego aprendiste a identificar la referencia de compilación única (build reference) a partir de la salida de docker history. Esta referencia es crucial para acceder a información específica relacionada con la compilación, como los registros de construcción (build logs), que explorarás en los siguientes pasos.