Camadas e cache de build
Cada instrução num Dockerfile cria uma camada. O Docker guarda as camadas num cache e reaproveita uma camada pronta só se ela e tudo acima dela não tiver mudado. Por isso a ordem importa: organize as instruções da que muda menos para a que muda mais, copiando o ficheiro de dependências e instalando-
Imagine uma pilha de folhas transparentes, uma sobre a outra. Ao mudar uma folha perto do topo, todas as folhas acima dela são reimpressas — mas as folhas abaixo permanecem exatamente como estavam.
- camada
- O resultado de uma única instrução do Dockerfile — uma mudança diferencial no sistema de ficheiros empilhada sobre as camadas anteriores e guardada no cache.
- cache de build
- O conjunto de camadas salvas de um build anterior; o Docker as reaproveita para pular instruções que não mudaram e reduzir o tempo de build.
- invalidação de cache
- O momento em que a entrada de uma instrução muda (por exemplo, um ficheiro que ela copia), forçando essa instrução e todas as que vêm depois a rodar de novo em vez de serem obtidas do cache.