Comandos essenciais para gerenciamento de containers e imagens
📖 Definição
Docker é uma plataforma de contêineres que permite criar, implantar e executar aplicações em ambientes isolados chamados contêineres. Ele utiliza virtualização no nível do sistema operacional para entregar software em pacotes chamados imagens.
💪 Por que aprender?
• Portabilidade entre ambientes
• Isolamento de aplicações
• Eficiência de recursos
• Deploy consistente
• Ecossistema rico de ferramentas
🚀 O que você pode fazer?
• Desenvolvimento web e APIs
• Microserviços
• CI/CD e DevOps
• Testes automatizados
• Cloud Native
Apps, Microserviços
CI/CD, Deploy
AWS, Azure, GCP
Kubernetes, Orquestração
ℹ️ Informações Básicas
Use quando: Precisa verificar status do Docker, versões ou informações do sistema
📋Versão e Sistema
docker --version# Versão Docker
docker info# Informações do sistema
docker system info# Info detalhada
docker system df# Uso de espaço
📋Verificação
docker version# Versão client/server
docker system events# Eventos em tempo real
docker system events --since 1h# Eventos última hora
docker system prune --filter until=24h# Limpa recentes
📦 Containers
Use quando: Gerenciando ciclo de vida de containers, deploy ou debugging
📋Listar Containers
docker ps# Containers rodando
docker ps -a# Todos containers
docker ps -q# Apenas IDs
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"# Formatado
📋Executar Containers
docker run -p 3001:3001 blueprint-backend# Mapear porta
docker run -d --name backend -p 3001:3001 blueprint-backend# Detached
docker run -it --rm alpine sh# Interativo + remove
docker run -e NODE_ENV=production app# Com variáveis
docker run -v $(pwd):/app -w /app node npm install# Com volume
docker run --restart unless-stopped app# Reinicia automático
docker run --memory="256m" app# Limita memória
docker run --cpus="0.5" app# Limita CPU
📋Gerenciar Containers
docker stop container_name# Parar container
docker stop $(docker ps -q)# Parar todos
docker rm container_name# Remover container
docker rm $(docker ps -aq)# Remover todos
docker restart container_name# Reiniciar
docker pause container_name# Pausa container
docker unpause container_name# Despausa container
docker kill container_name# Força parada
🖼️ Imagens
Use quando: Criando, gerenciando ou limpando imagens Docker
📋Listar Imagens
docker images# Listar imagens
docker images -a# Incluir intermediárias
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"# Formatado
📋Build de Imagens
docker build -t blueprint-backend ./backend# Build básico
docker build -t blueprint-frontend ./frontend# Build frontend
docker build --no-cache -t app:latest .# Sem cache
docker build --target production -t app:prod .# Multi-stage
docker build --build-arg NODE_ENV=production -t app .# Com args
docker build --progress=plain -t app .# Build detalhado
docker build --squash -t app .# Squash layers
docker build --label version=1.0 -t app .# Com labels
📋Gerenciar Imagens
docker rmi image_name# Remover imagem
docker rmi $(docker images -q)# Remover todas
docker image prune# Imagens não usadas
docker image prune -a# Todas órfãs
docker tag source:latest target:1.0# Renomeia imagem
docker push registry.com/app:latest# Push registry
docker pull registry.com/app:latest# Pull registry
📊 Logs e Monitoramento
Use quando: Debugging, monitoramento ou análise de problemas
📋Logs de Containers
docker logs container_name# Ver logs
docker logs -f container_name# Follow logs
docker logs --tail 50 container_name# Últimas 50 linhas
docker logs --since="2h" container_name# Últimas 2 horas
docker logs --timestamps container_name# Com timestamps
📋Monitoramento
docker stats# Estatísticas em tempo real
docker stats container_name# Container específico
docker top container_name# Processos no container
docker stats --no-stream# Estatísticas estáticas
docker stats --format "table {{.Container}}\t{{.CPUPerc}}"# Formatado
docker events# Eventos Docker
📋Inspeção
docker inspect container_name# Detalhes container
docker inspect image_name# Detalhes imagem
⚡ Execução e Interação
Use quando: Precisa interagir com containers em execução ou transferir arquivos
📋Executar Comandos
docker exec -it container_name bash# Shell no container
docker exec -it container_name sh# Shell básico
docker exec container_name ls -la /app# Comando específico
📋Copiar Arquivos
docker cp file.txt container_name:/app/# Host → Container
docker cp container_name:/app/logs ./logs# Container → Host
📋Portas e Rede
docker port container_name# Portas mapeadas
docker run -p 8080:80 nginx# Mapear porta
docker run -P nginx# Mapear automático
docker exec -u root container bash# Como root
docker exec -d container sleep 60# Background
docker exec -it container --env VAR=value cmd# Com variáveis
🧹 Limpeza e Manutenção
Use quando: Precisa liberar espaço em disco ou limpar ambiente Docker
⚠️ ⚠️ ATENÇÃO: O comando docker system prune -a --volumes removerá TODOS os dados não utilizados, incluindo volumes. Use com extrema cautela!
📋Limpeza Geral
docker system prune# Remove dados não usados
docker system prune -a# Remove tudo não usado
docker system prune --volumes# Inclui volumes
📋Limpeza Específica
docker container prune# Containers parados
docker image prune# Imagens órfãs
docker volume prune# Volumes não usados
docker network prune# Redes não usadas
docker system df -v# Detalhado
docker system events --filter type=container# Filtra eventos
docker builder prune# Limpa cache build
📋Verificar Espaço
docker system df# Uso de espaço
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"# Tamanho imagens
🔧 Docker Compose
Use quando: Trabalhando com aplicações multi-container ou ambientes de desenvolvimento
📋Comandos Básicos
docker-compose --version# Versão Compose
docker-compose up# Subir serviços (foreground)
docker-compose up -d# Subir (background)
docker-compose up backend# Serviço específico
docker-compose up --build# Rebuild antes
docker-compose up --force-recreate# Recriar containers
docker-compose up --remove-orphans# Remove órfãos
docker-compose up --no-deps# Sem dependências
docker-compose up --timeout 30# Timeout customizado
📋Parar e Remover
docker-compose down# Para e remove containers
docker-compose down -v# Inclui volumes
docker-compose stop# Apenas para
docker-compose stop backend# Serviço específico
docker-compose down --rmi all# Remove imagens
docker-compose down --timeout 10# Timeout customizado
docker-compose rm -f# Força remoção
docker-compose down --remove-orphans# Remove órfãos
📋Logs e Execução
docker-compose logs# Logs todos serviços
docker-compose logs -f# Follow logs
docker-compose logs backend# Serviço específico
docker-compose exec backend bash# Shell no container
docker-compose exec backend cargo build# Comando específico
docker-compose logs --tail 50 backend# Últimas 50 linhas
docker-compose logs --since="1h" backend# Última hora
docker-compose exec -T backend ls -la# Sem TTY
docker-compose exec -u root backend bash# Como usuário específico
📋Build e Scale
docker-compose build# Build todos serviços
docker-compose build backend# Build específico
docker-compose build --no-cache# Sem cache
docker-compose up -d --scale backend=3# 3 instâncias
docker-compose pull# Atualiza imagens
docker-compose config# Valida configuração
docker-compose ps# Status serviços
docker-compose build --parallel# Build paralelo
docker-compose build --progress=plain# Build detalhado
docker-compose up --scale web=2 --scale db=1# Múltiplos serviços
📋Variáveis de Ambiente
docker-compose run --env VAR=value backend# Variável inline
docker-compose run --env-file .env backend# Arquivo .env
docker-compose config --services# Ver configuração
docker-compose --env-file prod.env up# Ambiente específico
docker-compose run --rm backend env# Ver variáveis
docker-compose exec backend printenv# Variáveis no container
docker-compose --project-name projeto up# Nome do projeto
📋Volumes e Redes
docker-compose up -d --volume-driver local# Driver de volume
docker-compose exec backend ls /data# Listar volume
docker-compose run --rm backend ls /shared# Volume compartilhado
docker-compose up --network-alias web# Alias na rede
docker-compose exec backend ping database# Conectividade
docker-compose down --volumes# Remove volumes
docker volume ls | grep projeto# Volumes do projeto
docker network ls | grep projeto# Redes do projeto
📋Dependências e Serviços
docker-compose up --no-deps backend# Sem dependências
docker-compose up --force-recreate --no-deps# Recriar sem deps
docker-compose restart backend# Reiniciar serviço
docker-compose restart# Reiniciar todos
docker-compose pause backend# Pausar serviço
docker-compose unpause backend# Despausar serviço
docker-compose kill backend# Matar serviço
docker-compose up --scale backend=0# Escala para zero
📋Configuração Avançada
docker-compose -f docker-compose.prod.yml up# Arquivo específico
docker-compose -f docker-compose.yml -f docker-compose.override.yml up# Múltiplos arquivos
docker-compose --compatibility up# Modo compatibilidade
docker-compose --verbose up# Output detalhado
docker-compose --no-ansi up# Sem cores
docker-compose --profile dev up# Perfil específico
docker-compose --profile dev --profile test up# Múltiplos perfis
docker-compose config --resolve-env-vars# Resolver variáveis
📋Integração e CI/CD
docker-compose -f docker-compose.test.yml up --abort-on-container-exit# Testes automatizados
docker-compose -f docker-compose.ci.yml up --build# Ambiente CI
docker-compose run --rm backend npm test# Executar testes
docker-compose run --rm backend flake8 .# Lint de código
docker-compose run --rm backend python manage.py migrate# Migrations Django
docker-compose exec backend python manage.py collectstatic# Arquivos estáticos
docker-compose down && docker-compose up --build# Reciclar ambiente
📋Docker Compose V2
docker compose version# Versão V2
docker compose up# Comando V2
docker compose watch# Modo watch
docker compose alpha convert# Converter para V2
docker compose config --format json# Config JSON
docker compose run --rm backend bash# Executar V2
docker compose up --wait# Esperar saúde
docker compose up --attach dependencies# Anexar dependências
docker compose cp backend:/app ./local# Copiar arquivos V2
docker compose down --timeout 30# Timeout V2
🌐 Redes e Volumes
Use quando: Configurando comunicação entre containers ou persistência de dados
📋Gerenciar Redes
docker network ls# Listar redes
docker network inspect bridge# Inspecionar rede
docker network create --driver bridge blueprint-net# Criar rede
docker network rm network_name# Remover rede
📋Gerenciar Volumes
docker volume ls# Listar volumes
docker volume inspect volume_name# Inspecionar volume
docker volume rm volume_name# Remover volume
docker run -v nome_volume:/data alpine# Usar volume
📋Conectividade
docker exec -it container1 ping container2# Testar conexão
docker exec frontend curl http://backend:3001/health# Testar API
docker network connect bridge container# Conecta rede
docker network disconnect bridge container# Desconecta rede
docker volume create --name data# Cria volume
🔧 Troubleshooting
Use quando: Encontrando problemas com containers, redes ou instalação Docker
💡 💡 DICA: Se um container não inicia, verifique os logs com docker logs container_name e inspecione com docker inspect container_name
📋Verificar Status
docker version# Verificar instalação
systemctl status docker# Status serviço (Linux)
Get-Service docker# Status serviço (Windows)
📋Problemas Comuns
sudo usermod -aG docker $USER# Permissão Docker
newgrp docker# Aplicar grupo
📋Problemas de Espaço
docker system df# Ver uso espaço
docker system prune -a# Limpar tudo
📋Problemas de Rede
docker network ls# Listar redes
docker network inspect bridge# Inspecionar rede
📋Logs do Docker
journalctl -u docker.service# Logs Docker (Linux)
Get-EventLog -LogName Application -Source Docker# Logs (Windows)
docker context ls# Lista contextos
docker context use my-context# Muda contexto
docker trust inspect image:tag# Verifica assinatura
🤝 Contribuindo
Encontrou um erro? Quer melhorar um cheatsheet? Tem uma sugestão? Adoraríamos suas contribuições! Abra uma issue ou submeta um PR.
Gostou do projeto? Apoie o desenvolvimento com um café e ajude a manter tudo open source ☕