Principais comandos do Docker – agrupados por categoria para facilitar a consulta no dia a dia.
1. Gestão de imagens
docker pull <imagem>– transfere 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 doDockerfileno diretório atual.docker tag <imagem> <repo>:<tag>– renomeia/etiqueta 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 segundo plano (detached) |
-p 8080:80 |
Mapeia porta host:container |
--name minhaapp |
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– monitoriza utilização 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 utilização 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>– liga container à rede.docker network disconnect <rede> <container>– desliga container da rede.
6. Limpeza (housekeeping)
docker system prune– remove containers parados, redes e imagens não utilizados.docker system prune -a– idem, incluindo todas as imagens não utilizadas.docker volume prune– remove volumes não utilizados.
docker system prune -a remove imagens que não estão vinculadas a nenhum container ativo. Utilize com cuidado em ambientes partilhados.7. Docker Compose (multi-containers)
docker compose up -d– inicia os containers definidos nodocker-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 tornou-se padrão para empacotar e executar aplicações. Em produção, porém, imagens mal configuradas e containers a correr como root podem ampliar a superfície de ataque e dificultar auditorias.
Imagens mais leves e em camadas
Utilize imagens base Alpine ou distroless sempre que possível e adote multi-stage builds para compilar numa etapa e copiar apenas o binário para a etapa final. Menos pacotes = menos CVEs e menor tamanho. Fixe a tag da imagem base (ex.: node:20-alpine) para evitar surpresas em rebuilds.
Executar como não-root
Crie um utilizador 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. Monitorize com ferramentas de conformidade como Trivy ou Docker Scout para identificar vulnerabilidades conhecidas.
Secrets e configuração
Nunca coloque palavras-passe ou chaves em variáveis de ambiente em texto no docker-compose.yml. Utilize Docker secrets, ficheiros montados como read-only ou um orquestrador (Kubernetes Secrets, HashiCorp Vault). Efetue a rotação de credenciais regularmente e mantenha as imagens base atualizadas.