Docker: guia melhores práticas e comandos mais usados

Sabe aqueles comandos Docker que você pesquisa toda hora porque nunca decorou? Juntei os principais em um guia rápido, agrupados por categoria: imagens, containers, volumes, redes, logs e Docker Compose. Inclui também boas práticas em produção: imagens enxutas, usuário não-root, secrets e manutenção.

Principais comandos do Docker — agrupados por categoria para facilitar a consulta no dia a dia.

1. Gerenciamento de imagens

  • docker pull <imagem> — baixa uma imagem do Docker Hub (ou registry).
  • docker images — lista imagens locais.
  • docker rmi <imagem> — remove uma imagem.
  • docker build -t <nome>:<tag> . — cria imagem a partir do Dockerfile no diretório atual.
  • docker tag <imagem> <repo>:<tag> — renomeia/tagueia uma imagem.
  • docker push <repo>:<tag> — envia imagem para o registry.

2. Containers (execução)

docker run <imagem> — cria e executa um container. Principais opções:

Flag O que faz
-d Executa em background (detached)
-p 8080:80 Mapeia porta host:container
--name meuapp Define o nome do container
-v /host:/container Monta um volume
  • docker ps — lista containers em execução.
  • docker ps -a — lista todos os containers (ativos e parados).
  • docker stop <id|nome> — para um container.
  • docker start <id|nome> — inicia um container parado.
  • docker restart <id|nome> — reinicia um container.
  • docker rm <id|nome> — remove um container.

3. Logs, shell e inspeção

  • docker logs <id|nome> — exibe logs do container.
  • docker logs -f <id|nome> — acompanha logs em tempo real (tail -f).
  • docker exec -it <id|nome> sh — abre shell interativo dentro do container.
  • docker inspect <id|nome> — exibe detalhes completos em JSON.
  • docker stats — monitora uso de CPU e memória em tempo real.

4. Volumes e dados

  • docker volume ls — lista volumes.
  • docker volume create <nome> — cria um volume.
  • docker volume rm <nome> — remove um volume.
  • docker system df — exibe uso de disco (imagens, containers, volumes).

5. Redes

  • docker network ls — lista redes.
  • docker network create <nome> — cria uma rede.
  • docker network inspect <nome> — exibe detalhes da rede.
  • docker network connect <rede> <container> — conecta container à rede.
  • docker network disconnect <rede> <container> — desconecta container da rede.

6. Limpeza (housekeeping)

  • docker system prune — remove containers parados, redes e imagens não usados.
  • docker system prune -a — idem, incluindo todas as imagens não utilizadas.
  • docker volume prune — remove volumes não usados.
⚠️ Atenção: docker system prune -a remove imagens que não estão vinculadas a nenhum container ativo. Use com cuidado em ambientes compartilhados.

7. Docker Compose (multi-containers)

  • docker compose up -d — sobe os containers definidos no docker-compose.yml.
  • docker compose down — para e remove os containers da stack.
  • docker compose logs -f — acompanha logs de todos os serviços.
  • docker compose ps — lista containers do projeto.
  • docker compose exec <serviço> sh — abre shell dentro de um serviço.

8. Boas práticas em produção

Docker virou padrão para empacotar e rodar aplicações. Em produção, porém, imagens mal configuradas e containers rodando como root podem ampliar a superfície de ataque e dificultar auditorias.

Imagens menores e em camadas

Use imagens base Alpine ou distroless sempre que possível e adote multi-stage builds para compilar em um estágio e copiar apenas o binário para o estágio final. Menos pacotes = menos CVEs e menor tamanho. Fixe a tag da imagem base (ex.: node:20-alpine) para evitar surpresas em rebuilds.

Rodar como não-root

Crie um usuário dedicado no Dockerfile e utilize a instrução USER antes do CMD. No Kubernetes ou Docker Compose, evite o modo privileged e limite recursos de CPU e memória. Monitore com ferramentas de conformidade como Trivy ou Docker Scout para identificar vulnerabilidades conhecidas.

Secrets e configuração

Nunca coloque senhas ou chaves em variáveis de ambiente em texto no docker-compose.yml. Use Docker secrets, arquivos montados como read-only ou um orquestrador (Kubernetes Secrets, HashiCorp Vault). Rotacione credenciais regularmente e mantenha as imagens base atualizadas.

Comentários