Como debugar logs de containers Docker
Para acessar logs de um container Docker, use docker logs <container> — funciona mesmo se o container estiver parado. Para filtrar por tempo: --since 30m ou --until 2026-06-07T10:00:00. Para seguir em tempo real: --follow (-f). Em Docker Compose, docker compose logs -f <serviço> é o equivalente. O log driver padrão json-file armazena em /var/lib/docker/containers/ no host.
Comandos essenciais de log
Os comandos mais úteis para acessar e filtrar logs de containers:
# Todos os logs de um container
docker logs nome_container
# Últimas N linhas
docker logs --tail 100 nome_container
# Seguir em tempo real
docker logs -f nome_container
# Seguir com timestamp
docker logs -f -t nome_container
# Filtrar por janela de tempo
docker logs --since 1h nome_container # última 1 hora
docker logs --since 30m nome_container # últimos 30 minutos
docker logs --since 2026-06-07T09:00:00Z nome_container
# Docker Compose
docker compose logs -f --tail 50 nome_servico
docker compose logs -f # todos os serviçosLogs de containers que crasharam
O Docker preserva os logs mesmo após o container parar ou crashar — você pode sempre recuperá-los:
# Listar containers parados (incluindo crashados)
docker ps -a
# Ver logs do container crashado pelo ID ou nome
docker logs abc123def456
# Ver os últimos logs antes do crash
docker logs --tail 200 abc123def456
# Para encontrar o container mais recente de um serviço:
docker ps -a --filter "name=nome_do_servico" --format "table {{.ID}} {{.Status}} {{.Names}}"Configurar rotação de logs (evitar disco cheio)
O driver padrão json-file não tem limite por padrão — logs crescem indefinidamente. Configure rotação globalmente ou por serviço:
# Configuração global no daemon (afeta novos containers)
# /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
# sudo systemctl reload docker
# Por serviço no docker-compose.yml (substitui config global)
services:
app:
image: minha-app:latest
logging:
driver: json-file
options:
max-size: "10m"
max-file: "5" # mantém 5 arquivos de 10MB = 50MB máximoLocalizar os logs no disco do host
Se você precisa de acesso direto aos arquivos de log (para grep, tail ou envio para um coletor externo):
# Encontrar o path do arquivo de log de um container
docker inspect nome_container | grep '"LogPath"'
# Os arquivos ficam em:
# /var/lib/docker/containers/<container-id>/<container-id>-json.log
# Ler diretamente (requer sudo)
sudo tail -f $(docker inspect --format='{{.LogPath}}' nome_container)
# Grep no arquivo de log (formato JSON)
sudo grep '"error"' $(docker inspect --format='{{.LogPath}}' nome_container)Logs de múltiplos containers com prefixo
Para monitorar vários serviços ao mesmo tempo, docker compose logs agrega e prefixa cada linha com o nome do serviço:
# Todos os serviços do stack
docker compose logs -f --tail 50
# Múltiplos serviços específicos
docker compose logs -f app db redis
# Apenas erros (grep no output agregado)
docker compose logs --tail 200 2>&1 | grep -i "error|fatal|exception"
# Salvar logs em arquivo para análise posterior
docker compose logs --tail 1000 > logs-$(date +%Y%m%d-%H%M%S).txt$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o Docker em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.