Melhores Práticas Docker
Otimização de Imagens de Contêiner
Imagens Docker eficientes são cruciais para o desempenho e a segurança. Implemente builds em várias etapas para reduzir o tamanho e a complexidade da imagem:
## Exemplo de build em várias etapas
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin/
EXPOSE 8080
CMD ["myapp"]
Considerações de Segurança
| Prática de Segurança |
Descrição |
Implementação |
| Imagens Base Mínimas |
Utilize imagens base leves |
Alpine Linux |
| Usuários Não-Root |
Execute contêineres como não-root |
Diretiva USER |
| Varredura de Imagens |
Detectar vulnerabilidades |
Trivy, Docker Scout |
graph TD
A[Segurança Docker] --> B[Imagens Mínimas]
A --> C[Execução sem privilégios de root]
A --> D[Varredura Regular]
Gerenciamento de Recursos de Contêiner
Implemente restrições de recursos para evitar sobrecarga do contêiner:
## Limitar o uso de CPU e memória
docker run -d \
--cpus="0.5" \
--memory="512m" \
--memory-reservation="256m" \
myapp:latest
Técnicas de Otimização de Dockerfile
Reduza as camadas de imagem e otimize o processo de build:
## Combinar comandos para minimizar camadas
RUN apt-get update \
&& apt-get install -y python3 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
Princípios de Orquestração de Contêineres
Utilize o Docker Compose para implantações complexas:
version: "3"
services:
web:
image: myapp
deploy:
replicas: 3
restart_policy:
condition: on-failure
ports:
- "8080:80"
Estratégias de Log e Monitoramento
Configure log e monitoramento centralizados:
## Log em arquivo JSON com limites de tamanho
docker run --log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
myapp:latest