Conteúdo

Tutorial de docker logs: veja os logs do contêiner com -f, --tail e --since

docker logs exibe a saída do processo principal do contêiner. Para conhecer o processo de depuração, consulte Ver logs e depurar.

Sintaxe

docker logs [OPÇÕES] CONTÊINER

Parâmetros

ParâmetroDescrição
-f, --followContinua exibindo novos logs. Pressione Ctrl+C para parar
-n, --tail NÚMEROExibe apenas as últimas n linhas (o padrão é all)
-t, --timestampsAdiciona um registro de data e hora no início de cada linha
--since TEMPOExibe apenas os logs gerados depois de um determinado momento, por exemplo 10m, 2h, 2026-10-14T08:00:00
--until TEMPOExibe apenas os logs gerados antes de um determinado momento
--detailsExibe informações adicionais, como os rótulos adicionados com --log-opt na inicialização

Exemplos

O contêiner de exemplo grava line N em stdout e error N em stderr a cada segundo, por 5 vezes:

docker run -d --name logger alpine:3.23 sh -c 'for i in 1 2 3 4 5; do echo line $i; echo error $i >&2; sleep 1; done; sleep 600'

Tudo, últimas linhas e registro de data e hora

$ docker logs logger
line 1
error 1
line 2
error 2
line 3
error 3
error 4
line 4
error 5
line 5

$ docker logs --tail 2 logger
error 5
line 5

$ docker logs -t --tail 2 logger
2026-10-13T05:28:48.681587356Z error 5
2026-10-13T05:28:48.681659184Z line 5
  • Sem parâmetros, exibe tudo. As saídas de stdout e stderr aparecem intercaladas, em ordem cronológica.
  • --tail 2 exibe apenas as 2 últimas linhas. Use essa opção quando houver muitos logs.
  • -t adiciona o horário registrado pelo Docker (UTC), com precisão de nanossegundos.

Período recente

$ docker logs --since 3s logger
error 4
line 4
error 5
line 5

--since 3s exibe apenas os logs dos últimos 3 segundos. É mais preciso do que --tail para investigar “o que acabou de acontecer”.

stdout e stderr

$ docker logs logger 2>/dev/null
line 1
line 2
line 3
line 4
line 5

$ docker logs logger 2>&1 | grep error
error 1
error 2
error 3
error 4
error 5
  • docker logs envia stdout e stderr do contêiner separadamente para stdout e stderr do seu terminal.
  • 2>/dev/null descarta stderr, deixando apenas as linhas line.
  • Para pesquisar mensagens de erro com grep, primeiro combine stderr com stdout usando 2>&1. Caso contrário, o pipe recebe apenas stdout e não encontra nada.

Acompanhar continuamente

$ timeout 3 docker logs -f --tail 1 logger
line 5

-f aguarda continuamente novos logs. Com --tail 1, exibe primeiro a última linha e depois começa a acompanhar. Neste exemplo, timeout 3 encerra o comando automaticamente após 3 segundos; no uso normal, pressione Ctrl+C para parar. O comando equivalente no Compose é docker compose logs -f nome-do-serviço.

Capítulos relacionados

Exercícios

Exercício: exiba os logs do contêiner logger dos últimos 1 minuto que contenham error e adicione o registro de data e hora.

Resposta
docker logs -t --since 1m logger 2>&1 | grep error

Perguntas frequentes

docker logs não exibe nada?

docker logs coleta apenas o conteúdo que o processo principal do contêiner grava na saída padrão (stdout) e no erro padrão (stderr). Se o programa grava os logs em um arquivo (por exemplo, /var/log/app.log), use docker exec para ler esse arquivo ou configure o programa para gravar em stdout.

Os logs do programa Python demoram para aparecer?

Sem um terminal, o Python armazena a saída em buffer. Defina a variável de ambiente PYTHONUNBUFFERED=1 para exibir a saída em tempo real. Consulte [Aplicações Python](/pt/docker/python/).

docker logs | grep não encontra uma mensagem de erro que existe?

As mensagens de erro geralmente são gravadas em stderr, e o pipe | transmite apenas stdout. Use docker logs contêiner 2>&1 | grep palavra-chave.

O que fazer quando os logs ocupam muito espaço em disco?

Defina limites de tamanho para os logs (--log-opt max-size=10m --log-opt max-file=3). Veja os resultados práticos em [Liberar espaço em disco](/pt/docker/cleanup/).

Atualizado 14 de outubro de 2026