Sobes.tech
Junior

O que é squash no Docker?

sobes.tech IA

Resposta da IA

Squash no Docker é o processo de combinar camadas de uma imagem em uma só, reduzindo o seu tamanho e número de camadas. Isto é útil para otimizar as imagens finais, especialmente aquelas que contêm muitos comandos intermédios no Dockerfile.

Razões principais para usar:

  • Redução do tamanho da imagem: Ao combinar camadas, pode-se eliminar ficheiros intermédios e caches criados nas etapas anteriores que não são necessários na imagem final.
  • Redução do número de camadas: Menos camadas facilitam o trabalho com a imagem, aceleram o seu download e reduzem a quantidade de metadados.
  • Ocultação de passos intermédios: As camadas intermédias podem conter informações confidenciais ou ser menos compreensíveis. Squash ajuda a obter uma imagem final mais "limpa".

Implementações:

  • Docker BuildKit: Método moderno usando a opção --squash. Incluído nativamente.
  • Ferramentas de terceiros: Anteriormente eram usadas utilidades ou scripts externos.

Exemplo de uso com BuildKit:

# Dockerfile

FROM ubuntu:latest
RUN apt-get update && apt-get install -y --no-install-recommends some-package && rm -rf /var/lib/apt/lists/*
RUN echo "etapa intermédia" > /tmp/intermediate_file
RUN rm /tmp/intermediate_file
CMD ["bash"]

Construção com squash:

docker build --squash -t minha-imagem-esmagada .

Note que o squash pode dificultar a depuração, pois as camadas intermédias deixam de estar acessíveis. Por isso, geralmente é aplicado à construção final para produção.