29.04.2025

Como reduzir uma imagem do Docker: 8 maneiras de tornar o contêiner mais leve e seguro

Criar imagens Docker leves e seguras é uma tarefa essencial para desenvolvedores, engenheiros DevOps e todos que trabalham com contêineres. Quanto menor a imagem, mais rápido é seu processo de build, entrega e inicialização. Isso é especialmente crítico em ambientes de nuvem, pipelines CI/CD e arquiteturas de microsserviços escaláveis.

Neste artigo, vamos explorar por que reduzir imagens é importante, como fazer isso da maneira certa e quais ferramentas você deve considerar.

Por que é importante reduzir imagens Docker?

Uma imagem grande:

1. Use imagens base mínimas

Sempre comece com a imagem base mais enxuta possível para sua stack:

Linguagem Imagem mínima
Node.js node:alpine
Python python:alpine
Go golang:alpine ou scratch
Java eclipse-temurin:<versão>-alpine
Ubuntu ubuntu:minimal ou debian:slim

O Alpine Linux é uma distribuição ultraleve (~5MB) e funciona muito bem para a maioria dos aplicativos.

2. Remova tudo que for desnecessário após a instalação

Depois de instalar pacotes via apt, apk, pip, npm etc.:

Exemplo para sistemas baseados em Debian:

RUN apt-get update && apt-get install -y \
curl \
&& rm -rf /var/lib/apt/lists/*

3. Use multi-stage builds

Uma das formas mais poderosas de otimizar imagens é separar o estágio de build do de runtime.

Exemplo com Go:

# Etapa de build
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# Etapa de execução
FROM alpine
COPY --from=builder /app/myapp /myapp
ENTRYPOINT ["/myapp"]

Resultado: uma imagem limpa e mínima, sem dependências de compilação.

4. Use .dockerignore

O arquivo .dockerignore funciona como um .gitignore, excluindo arquivos desnecessários do contexto de build:

.git
node_modules
__pycache__
*.log
*.md
tests/

Isso acelera o build e reduz o tamanho da imagem.

5. Use o docker-slim

A ferramenta docker-slim analisa automaticamente quais arquivos são realmente usados pelo seu app e cria uma imagem mínima.

Exemplo de uso:

docker build -t myapp .
docker-slim build myapp

Resultado: redução de 10 a 30 vezes no tamanho da imagem.

6. Combine comandos RUN

Cada comando RUN cria uma nova camada. Combine comandos com && para reduzir o número de camadas:

RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*

7. Minimize o uso de COPY e ADD

Evite múltiplos comandos COPY. Prefira um único:

COPY . /app

E use ADD apenas se for necessário extrair arquivos de um .tar ou baixar conteúdo remoto — COPY é mais seguro e previsível.

8. Remova dependências não utilizadas

Se você usa Python, Node.js ou outra linguagem com gerenciadores de pacotes, adote práticas como:

Conclusão

Reduzir o tamanho das imagens Docker não é apenas uma questão de economizar megabytes, mas também de:

Seguindo essas boas práticas e usando ferramentas como o docker-slim, você poderá criar imagens enxutas, rápidas e seguras — ideais para ambientes de produção.