¿Cómo depurar la invalidación de caché de Docker?

15

Docker tiene un caché, lo cual es genial, pero todo lo que veo en el resultado de "construcción de docker" es:

---> Using cache

o la salida del comando (lo que implica que no está usando el caché).

Después de un paso en mi Dockerfile (una COPIA), claramente no usa el caché. Pero estoy bastante seguro de que nada ha cambiado en la carpeta que está copiando. (Es nuestra aplicación, y me encuentro con el caso sin caché, incluso cuando despliegue dos veces seguidas, por ejemplo).

¿Hay alguna forma de hacer que Docker me diga qué cree que cambió?

Sé que Docker solía verificar las marcas de tiempo para esto, pero eso se solucionó en Docker 1.8, y estoy en Docker 1.9.x aquí.

Timmay
fuente
Por favor publique suDockerfile
Joel E Salas
1
@ JoelESalas: No entiendo tu solicitud. Algo tan simple como FROM ubuntu:14.04 MAINTAINER me COPY /app/ /app/lo demostrará. Y no voy a publicar todo mi código fuente e infraestructura.
Timmay
1
Además, aunque mirando el Dockerfile podría ayudar, la pregunta era ¿cómo me diagnosticar tales problemas. No quiero que alguien más mire mi configuración y me diga la respuesta. Quiero saber qué herramientas existen para ayudar a resolver el problema.
Timmay
¿Qué tan seguro está de que nada está cambiando en ese directorio?
Joel E Salas

Respuestas:

4

Utilice la búsqueda binaria, con .dockerignore.

Agregue la mitad de sus archivos .dockerignorey cree el contenedor. Si usa el caché para el COPYpaso, entonces sabe que los archivos modificados están en el conjunto que ignoró, de lo contrario, sabe que está en la otra mitad. Repita esta prueba con el conjunto de archivos que tiene el cambio, hasta que sea solo un archivo / carpeta.

(Estimado lazyweb: ¡descubra alguna forma de extender Docker para que esto sea menos doloroso!)

Timmay
fuente
2
Suena un enfoque correcto para depurar algo localmente, gracias. En mi caso, actualmente estoy tratando de depurar el caché de Docker en un entorno de CI, y estoy un poco molesto porque parece que no puedo encontrar ninguna manera de hacer que Docker construya más detallado = /
elias