Técnicas para Reduzir o Tamanho da Imagem Docker
Agora que entendemos os fatores que afetam o tamanho da imagem Docker, vamos explorar várias técnicas para reduzir o tamanho das suas imagens Docker.
Escolha uma Imagem Base Menor
A escolha da imagem base é uma das decisões mais importantes ao construir uma imagem Docker. Optar por uma imagem base menor, como alpine ou scratch, pode reduzir significativamente o tamanho geral da imagem.
Exemplo:
## Usando uma imagem base maior
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y python3
## Usando uma imagem base menor
FROM alpine:3.16
RUN apk add --no-cache python3
Minimize o Número de Camadas
Cada instrução num Dockerfile cria uma nova camada na imagem. Reduzir o número de camadas pode ajudar a otimizar o tamanho da imagem.
Exemplo:
## Múltiplas camadas
FROM ubuntu:22.04
RUN apt-get update
RUN apt-get install -y python3
RUN pip3 install flask
## Menos camadas
FROM ubuntu:22.04
RUN apt-get update \
&& apt-get install -y python3 \
&& pip3 install flask
Utilize Construções Multi-Fase
Construções multi-fase permitem-lhe usar várias declarações FROM num único Dockerfile, onde cada fase pode usar uma imagem base diferente. Isto pode ajudá-lo a separar os ambientes de construção e de execução, reduzindo o tamanho final da imagem.
Exemplo:
FROM ubuntu:22.04 AS builder
RUN apt-get update && apt-get install -y build-essential
COPY . /app
RUN cd /app && make
FROM ubuntu:22.04
COPY --from=builder /app/bin /app/bin
CMD ["/app/bin/myapp"]
Remover Ficheiros Desnecessários
Identifique e remova quaisquer ficheiros, pacotes ou dependências desnecessários da imagem. Isto pode incluir ferramentas de desenvolvimento, artefactos de construção ou outros ficheiros que não são necessários para a execução da aplicação.
Exemplo:
FROM ubuntu:22.04
RUN apt-get update \
&& apt-get install -y python3 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
Aproveite o Cache de Imagens
O uso eficiente do cache durante o processo de construção pode ajudar a reduzir o tamanho geral da imagem. Organize as instruções do seu Dockerfile para tirar partido do cache e minimizar o número de camadas que precisam de ser reconstruídas.
Exemplo:
FROM ubuntu:22.04
COPY requirements.txt .
RUN pip3 install -r requirements.txt
COPY . /app
CMD ["python3", "/app/app.py"]
Aplicando estas técnicas, pode reduzir significativamente o tamanho das suas imagens Docker, melhorando o desempenho e a eficiência geral das suas aplicações containerizadas.