Cómo usar docker buildx history export para exportar el historial de construcció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 export para gestionar y exportar el historial de construcción (build history) de Docker. Comenzaremos construyendo una imagen simple de Docker y examinando su historial de construcción mediante el comando docker history.

A continuación, aprenderás a exportar el historial de construcción de una imagen específica a un archivo. Finalmente, exploraremos cómo exportar todos los registros de construcción para un constructor (builder) determinado, proporcionando una visión completa de tus actividades de construcción. Este laboratorio te dotará de las habilidades necesarias para rastrear y gestionar eficazmente tus procesos de construcción de imágenes Docker.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/images -.-> lab-555049{{"Cómo usar docker buildx history export para exportar el historial de construcción"}} docker/build -.-> lab-555049{{"Cómo usar docker buildx history export para exportar el historial de construcción"}} end

Construir una imagen simple y ver su historial

En este paso, aprenderemos cómo construir una imagen simple de Docker y ver su historial. Construir una imagen de Docker implica crear un Dockerfile, que es un archivo de texto que contiene todos los comandos que un usuario podría ejecutar en la línea de comandos para ensamblar una imagen.

Primero, navega al directorio ~/project si no estás ya allí.

cd ~/project

Ahora, creemos un Dockerfile simple. Crearemos un archivo llamado Dockerfile en el directorio ~/project.

nano Dockerfile

Agrega el siguiente contenido al Dockerfile:

FROM ubuntu:latest
RUN echo "Hello, Docker!" > /app/hello.txt
CMD ["cat", "/app/hello.txt"]

Este Dockerfile hace lo siguiente:

  • FROM ubuntu:latest: Esta línea especifica la imagen base para nuestra nueva imagen. Estamos usando la última versión de la imagen Ubuntu de Docker Hub.
  • RUN echo "Hello, Docker!" > /app/hello.txt: Esta línea ejecuta un comando durante el proceso de construcción de la imagen. Crea un directorio /app y escribe el texto "Hello, Docker!" en un archivo llamado hello.txt dentro de ese directorio.
  • CMD ["cat", "/app/hello.txt"]: Esta línea especifica el comando predeterminado que se ejecutará cuando se inicie un contenedor a partir de esta imagen. Ejecutará el comando cat /app/hello.txt, que imprimirá el contenido del archivo hello.txt.

Guarda el archivo y sal del editor nano (Presiona Ctrl + X, luego Y, luego Enter).

Ahora, construyamos la imagen de Docker usando el comando docker build. Etiquetaremos la imagen con el nombre my-hello-image y la etiqueta latest. El . al final del comando indica que el Dockerfile se encuentra en el directorio actual.

docker build -t my-hello-image:latest .

Verás una salida que indica el proceso de construcción, mostrando cada paso que se ejecuta.

Después de que la imagen se haya construido, puedes ver el historial de la imagen usando el comando docker history. Este comando muestra las capas que componen la imagen y los comandos que se usaron para crear cada capa.

docker history my-hello-image:latest

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

Exportar el historial de construcción a un archivo

En el paso anterior, vimos el historial de construcción de nuestra imagen Docker directamente en la terminal. En este paso, aprenderemos cómo exportar este historial a un archivo para su posterior análisis o compartición.

Podemos redirigir la salida del comando docker history a un archivo usando el operador estándar de redirección de salida >. Exportemos el historial de la imagen my-hello-image:latest a un archivo llamado history.txt en el directorio ~/project.

Asegúrate de estar en el directorio ~/project:

cd ~/project

Ahora, ejecuta el siguiente comando para exportar el historial:

docker history my-hello-image:latest > history.txt

Este comando ejecutará docker history my-hello-image:latest y, en lugar de mostrar la salida en pantalla, escribirá la salida en el archivo history.txt.

Puedes verificar que el archivo se ha creado y contiene el historial de construcción viendo su contenido con el comando cat:

cat history.txt

Deberías ver la misma información del historial de construcción que viste en el paso anterior, pero ahora almacenada en el archivo history.txt. Este archivo puede compartirse fácilmente o usarse con fines de documentación.

Exportar el historial de construcción a un archivo es una práctica útil para mantener registros de cómo se construyen tus imágenes Docker, lo que puede ser valioso para depuración, auditorías y trabajo colaborativo.

Exportar todos los registros de construcción del builder

En los pasos anteriores, construimos una imagen Docker y exportamos su historial. Docker BuildKit, el builder predeterminado de Docker, mantiene registros de todas las operaciones de construcción. En este paso, aprenderemos cómo exportar todos estos registros de construcción.

Para exportar todos los registros de construcción, podemos usar el comando docker buildx build con la bandera --metadata-file. Esta bandera nos permite especificar un archivo donde se escribirá el metadata de construcción, incluyendo los registros, en formato JSON.

Primero, asegúrate de estar en el directorio ~/project:

cd ~/project

Ahora, construyamos la imagen nuevamente, pero esta vez exportaremos el metadata de construcción a un archivo llamado build-records.json. Usaremos el mismo Dockerfile que creamos en el primer paso.

docker buildx build --metadata-file build-records.json -t my-hello-image:latest .

El comando docker buildx build es parte del plugin Docker Buildx, que proporciona capacidades mejoradas de construcción. La bandera --metadata-file build-records.json indica a BuildKit que escriba el metadata de construcción en el archivo especificado.

Una vez completada la construcción, se creará un archivo llamado build-records.json en el directorio ~/project. Este archivo contiene información detallada sobre el proceso de construcción en formato JSON.

Puedes ver el contenido del archivo build-records.json usando el comando cat:

cat build-records.json

La salida será un objeto JSON que contiene varios detalles sobre la construcción, incluyendo información sobre los pasos de construcción, la imagen resultante y otros metadatos. Este registro completo puede ser valioso para análisis avanzados, automatización e integración con otras herramientas.

Exportar los registros de construcción proporciona una visión más detallada del proceso de construcción en comparación con solo el historial de la imagen, ofreciendo información sobre la ejecución de cada paso de construcción y las dependencias involucradas.

Resumen

En este laboratorio, aprendimos cómo construir una imagen Docker simple creando un Dockerfile con instrucciones para el proceso de construcción, incluyendo la especificación de una imagen base, la ejecución de comandos durante la construcción y la definición del comando predeterminado para los contenedores. Luego utilizamos el comando docker build para crear la imagen y le asignamos un tag para facilitar su identificación.

Después de construir la imagen, exploramos cómo ver su historial usando el comando docker history, que proporciona información sobre las capas y comandos utilizados para construir la imagen. El laboratorio nos guió a través de la exportación del historial de construcción de una imagen específica a un archivo usando docker buildx history export y posteriormente exportamos todos los registros de construcción para el builder actual, demostrando cómo preservar y revisar los detalles de construcción.