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 logsnu va afișa nimic. Configurează aplicația să scrie pe stdout/stderr. - Lipsa rotației jurnalelor: fișierele
*-json.logdin/var/lib/docker/containerspot 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.