Como depurar a invalidação de cache do Docker?

15

O Docker possui um cache, o que é ótimo, mas tudo o que vejo na saída "docker build" é:

---> Using cache

ou a saída do comando (o que implica que ele não está usando o cache).

Após uma etapa no meu Dockerfile (uma CÓPIA), ele claramente não usa o cache. Mas tenho certeza de que nada mudou na pasta que está sendo copiada. (É o nosso aplicativo e eu encontro o caso sem cache, mesmo quando implanto duas vezes seguidas, por exemplo.)

Existe alguma maneira de fazer o Docker me dizer o que ele acha que mudou?

Eu sei que o Docker costumava verificar os registros de data e hora para isso, mas isso foi corrigido no Docker 1.8 e eu estou no Docker 1.9.x aqui.

Timmay
fonte
Por favor, poste seuDockerfile
Joel E Salas
1
@ JoelESalas: Eu não entendo o seu pedido. Algo tão simples como FROM ubuntu:14.04 MAINTAINER me COPY /app/ /app/demonstrará isso. E não vou postar todo o meu código-fonte e infraestrutura.
Timmay 11/01
1
Além disso, mesmo olhando para o Dockerfile poderia ajudar, a questão era como se eu diagnosticar tais problemas. Não quero que mais ninguém olhe para a minha configuração e me diga a resposta. Quero saber quais ferramentas existem para ajudar a resolver o problema.
Timmay 11/01
Você tem certeza de que nada está mudando nesse diretório?
Joel E Salas

Respostas:

4

Use a pesquisa binária, com .dockerignore.

Adicione metade dos seus arquivos .dockerignoree construa o contêiner. Se ele usa o cache para a COPYetapa, você sabe que os arquivos alterados estão no conjunto que você ignorou, caso contrário, você sabe que está na outra metade. Repita este teste com o conjunto de arquivos que possui a alteração, até que seja apenas um arquivo / pasta.

(Prezado preguiçoso: descubra uma maneira de estender o Docker para tornar isso menos doloroso!)

Timmay
fonte
2
Parece uma abordagem correta para depurar algo localmente, obrigado. No meu caso, atualmente estou tentando depurar o cache do Docker em um ambiente de IC, e estou um pouco chateado por não conseguir encontrar nenhuma maneira de tornar o Docker compilado mais detalhadamente = /
elias