docker logs în Docker

Containere Docker 1.0+

Afișează ieșirea standard (stdout și stderr) a unui container.

Sintaxă comandă
docker logs [opțiuni] container

Ce face docker logs

Comanda docker logs afișează tot ce a scris procesul principal al containerului pe stdout și stderr. De aceea imaginile oficiale (Nginx, PostgreSQL etc.) sunt configurate să scrie jurnalele în consolă, nu în fișiere.

Funcționează și pentru containere oprite, ceea ce o face primul pas în depanarea unui container care a ieșit cu eroare (Exited (1)).

Jurnalele sunt păstrate de driverul de logging (implicit json-file) până la ștergerea containerului. Pe servere, configurează rotația jurnalelor (max-size, max-file) ca să nu umpli discul.

Opțiuni și argumente

Opțiune / Parametru Descriere
-f, --follow Urmărește jurnalul în timp real, ca tail -f.
-n, --tail N Afișează doar ultimele N linii.
--since Doar mesajele mai noi decât un moment: 10m, 1h, 2024-05-01T10:00:00.
--until Doar mesajele mai vechi decât un moment.
-t, --timestamps Adaugă marcajul de timp al fiecărei linii.
--details Afișează detalii suplimentare adăugate de driverul de logging.

Exemple

Exemplul 1: Ultimele linii și urmărire în timp real

Apasă Ctrl+C pentru a opri urmărirea; containerul continuă să ruleze.

docker logs -f --tail 5 web

Ieșire în terminal

2024/10/23 07:41:12 [notice] 1#1: start worker processes
2024/10/23 07:41:12 [notice] 1#1: start worker process 29
2024/10/23 07:41:12 [notice] 1#1: start worker process 30
172.17.0.1 - - [23/Oct/2024:07:42:03 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/8.5.0" "-"
172.17.0.1 - - [23/Oct/2024:07:42:09 +0000] "GET /favicon.ico HTTP/1.1" 404 153 "-" "Mozilla/5.0" "-"

Exemplul 2: De ce s-a oprit containerul?

Jurnalul unui container ieșit cu eroare arată cauza.

docker logs --since 1h -t worker

Ieșire în terminal

2024-10-23T06:48:51.204118925Z Traceback (most recent call last):
2024-10-23T06:48:51.204162741Z   File "/app/worker.py", line 3, in <module>
2024-10-23T06:48:51.204170382Z     import redis
2024-10-23T06:48:51.204176903Z ModuleNotFoundError: No module named 'redis'

Greșeli frecvente

  • Aplicații care scriu jurnalele doar în fișiere în interiorul containerului: docker logs nu va afișa nimic. Configurează aplicația să scrie pe stdout/stderr.
  • Lipsa rotației jurnalelor: fișierele *-json.log din /var/lib/docker/containers pot crește până umplu discul.

Comenzi înrudite

  • docker ps: Listează containerele care rulează (sau toate, cu -a).
  • docker exec: Rulează o comandă suplimentară într-un container care rulează deja.
  • docker inspect: Afișează în format JSON toate detaliile de nivel jos ale unui obiect Docker.
  • docker compose logs / ps / exec: Inspectează starea serviciilor, urmărește jurnalele și execută comenzi folosind numele serviciului din compose.yaml.