Compartir comentarios
Las respuestas se generan en base a la documentación.

Caché de compilación de Docker

Cuando compilas la misma imagen de Docker varias veces, saber cómo optimizar el caché de compilación es una gran herramienta para asegurarte de que las compilaciones se ejecuten rápidamente.

Cómo funciona el caché de compilación

Comprender el caché de compilación de Docker te ayuda a escribir mejores Dockerfiles que den como resultado compilaciones más rápidas.

El siguiente ejemplo muestra un pequeño Dockerfile para un programa escrito en C.

# syntax=docker/dockerfile:1
FROM ubuntu:latest

RUN apt-get update && apt-get install -y build-essentials
COPY main.c Makefile /src/
WORKDIR /src/
RUN make build

Cada instrucción en este Dockerfile se traduce en una capa en tu imagen final. Puedes pensar en las capas de la imagen como una pila, donde cada capa añade más contenido sobre las capas anteriores:

Diagrama de capas de imagen

Cada vez que una capa cambia, esa capa tendrá que volver a compilarse. Por ejemplo, supongamos que realizas un cambio en tu programa en el archivo main.c. Después de este cambio, el comando COPY tendrá que ejecutarse de nuevo para que esos cambios aparezcan en la imagen. En otras palabras, Docker invalidará el caché para esta capa.

Si una capa cambia, todas las demás capas que vienen después de ella también se ven afectadas. Cuando la capa con el comando COPY se invalida, todas las capas siguientes también necesitarán ejecutarse de nuevo:

Diagrama de capas de imagen, mostrando la invalidación del caché

Y ese es el caché de compilación de Docker en pocas palabras. Una vez que una capa cambia, todas las capas posteriores también deben volver a compilarse. Incluso si no compilaran nada de manera diferente, de igual forma necesitan volver a ejecutarse.

Otros recursos

Para obtener más información sobre el uso del caché para realizar compilaciones eficientes, consulta: