Aprovechamiento de la caché de compilación
Optimice los tiempos de compilación de Docker comprendiendo y utilizando eficazmente el mecanismo de caché de compilación de Docker.
Aprovechamiento de la caché de compilación es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.
Construya más rápido con la caché
Crear imágenes de Docker puede llevar tiempo, especialmente en aplicaciones complejas. La caché de compilación de Docker es una función inteligente que ayuda a acelerar considerablemente el proceso.
Funciona reutilizando capas de compilaciones anteriores, por lo que Docker no tiene que volver a compilar todo desde cero cada vez.

Compilaciones capa por capa
Cuando crea una imagen de Docker mediante un Dockerfile, Docker ejecuta cada instrucción línea por línea.
- Cada instrucción, como
FROM,RUNoCOPY, crea una nueva "capa" en su imagen. - Estas capas se apilan unas sobre otras para formar la imagen final.
Comprobación de la caché de Docker
Antes de ejecutar una instrucción, Docker comprueba si ya ha creado exactamente esa capa anteriormente. Compara lo siguiente:
- La propia instrucción (por ejemplo,
RUN apt update). - El "contexto" de determinadas instrucciones (por ejemplo, los archivos que se indican mediante
COPY).
Si encuentra una capa coincidente, Docker la reutiliza desde la caché en lugar de volver a ejecutar la instrucción.
Invalidación de la caché
La caché es excelente, pero no siempre se utiliza. Si Docker detecta algún cambio en una instrucción o en su contexto, se invalida la caché de esa capa y de todas las capas posteriores.
Esto significa que Docker volverá a compilar a partir de ese punto, ignorando las capas almacenadas en caché que se encuentren por debajo.
Orden inteligente de las instrucciones
Para maximizar los aciertos de caché, organice las instrucciones de su Dockerfile desde las que tienen menos probabilidades de cambiar hasta las que tienen más probabilidades de cambiar.
- Primero las dependencias estables: instale los paquetes del sistema o las dependencias de la aplicación que cambien con poca frecuencia.
- Al final, el código de la aplicación: copie el código fuente de su aplicación, que cambia con frecuencia, lo más tarde posible.
Orden para lograr aciertos de caché
Veamos un ejemplo. Al colocar el comando RUN pip install (que normalmente cambia con menos frecuencia) antes de COPY . . (que cambia con cada actualización del código), Docker puede reutilizar la capa de dependencias.
Imagine que requirements.txt contiene flask y gunicorn, y que app.py es su aplicación principal.
Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
CMD ["python", "app.py"]Si solo cambia app.py, Docker solo vuelve a crear las últimas capas COPY y CMD, lo que ahorra tiempo.
Copia selectiva con .dockerignore
Cuando utiliza COPY . ., Docker comprueba si ha habido cambios en cada archivo del contexto de compilación. Incluso los archivos pequeños e irrelevantes (como las carpetas .git o los datos de pruebas locales) pueden invalidar la caché.
Utilice un archivo .dockerignore para excluir archivos y directorios innecesarios del contexto de compilación. Así evitará que provoquen invalidaciones de la caché.
.dockerignore en acción
Coloque un archivo llamado .dockerignore en la raíz del contexto de compilación (junto a su Dockerfile).
Ejemplo de .dockerignore:
.git
.venv
__pycache__
*.log
node_modulesAhora, cuando utilice COPY . ., Docker ignorará estos archivos, lo que permitirá obtener aciertos de caché más fiables.
Cuándo omitir la caché
A veces querrá asegurarse de que todo se compile desde cero, ignorando completamente la caché. Esto puede resultar útil para depurar o para asegurarse de disponer de las versiones más recientes de las dependencias.
Puede forzar a Docker a volver a compilar sin utilizar la caché añadiendo la opción --no-cache al comando de compilación:
docker build --no-cache -t my-app:latest .Comprobación de la optimización de la caché
Está creando una imagen de Docker para una aplicación de Node.js. Actualmente, su Dockerfile tiene este aspecto:
FROM node:16-alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]¿Qué cambio optimizaría mejor este Dockerfile para aprovechar la caché de compilación?
Recapitulación: ¡domine la caché!
¡Buen trabajo! Ha aprendido a aprovechar la caché de compilación de Docker para crear imágenes más rápidamente.
- Docker crea las imágenes capa por capa y reutiliza las capas almacenadas en caché cuando es posible.
- Los cambios en una instrucción o en su contexto invalidan la caché a partir de ese punto.
- Optimice el proceso ordenando las instrucciones desde las que tienen menos probabilidades de cambiar hasta las que tienen más probabilidades de cambiar.
- Utilice
.dockerignorepara excluir archivos irrelevantes del contexto de compilación. - Utilice
--no-cachepara forzar una compilación desde cero cuando sea necesario.
Una caché eficiente permite ciclos de desarrollo más rápidos y despliegues más ágiles.
Preguntas frecuentes
¿La lección «Aprovechamiento de la caché de compilación» es gratis?
Sí — el texto completo de «Aprovechamiento de la caché de compilación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.
¿Qué aprenderé en «Aprovechamiento de la caché de compilación»?
Optimice los tiempos de compilación de Docker comprendiendo y utilizando eficazmente el mecanismo de caché de compilación de Docker. Practicas DevOps Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar DevOps Bootcamp?
No se requiere experiencia previa. DevOps Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Aprovechamiento de la caché de compilación»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de DevOps Bootcamp?
Sí. Cada lección de DevOps Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Compilaciones multietapa para mejorar la eficiencia
- Aprovechamiento de la caché de compilación
- Buenas prácticas de seguridad para Dockerfiles
- Minimización del tamaño de imágenes con bases Slim y Distroless