Docker: container, log e diagnosi
Ciclo di vita, log, exec, risorse e il debug dei container che muoiono. Ogni comando è verificato e copiabile; in chat basta descrivere cosa vuoi fare.
23 comandi in questa pagina
- Come vedo i container attivi?
- Come vedo anche i container fermi?
- Come avvio un container fermo?
- Come fermo un container in modo pulito?
- Come uccido un container bloccato?
- Come riavvio un container?
- Come ricreo un container senza perdere i dati?
- Come elimino un container?
- Come elimino tutti i container fermi in un colpo?
- Come vedo la configurazione completa di un container?
- Come controllo l'healthcheck di un container?
- Come entro dentro un container?
- Come copio file da e verso un container?
- Come vedo quanta CPU e RAM usano i container?
- Come vedo i processi dentro un container?
- Come cambio i limiti di risorse a un container avviato?
- Come vedo le ultime righe di log di un container?
- Come seguo i log di un container in diretta?
- Come filtro i log di un container per periodo o testo?
- Come svuoto il log di un container cresciuto troppo?
- Il container continua a riavviarsi: come lo debuggo?
- Come capisco se un container è stato ucciso per memoria (OOM)?
- Cosa significano gli exit code dei container?
# Come vedo i container attivi?
docker ps
Mostra solo i container in esecuzione; formato compatto: docker ps --format '{{.Names}}\t{{.Status}}'.
Approfondisci: Cos'è Docker Compose?Che differenza c'è tra container LXC e VM?
# Come vedo anche i container fermi?
docker ps -a
Include gli exited col loro exit code: il primo posto dove guardare quando qualcosa è morto.
Approfondisci: Cos'è Docker Compose?
# Come avvio un container fermo?
docker start <nome>
Riparte con la stessa configurazione; con -a vedi subito output e log.
Approfondisci: Cos'è Docker Compose?
# Come fermo un container in modo pulito?
docker stop <nome>
Manda SIGTERM e concede 10 secondi di grazia prima del SIGKILL; si allunga con -t 30.
Approfondisci: Cos'è Docker Compose?
# Come uccido un container bloccato?
docker kill <nome>
SIGKILL immediato, nessuna grazia: solo quando docker stop non risponde.
Approfondisci: Cos'è Docker Compose?
# Come riavvio un container?
docker restart <nome>
Equivale a stop + start; la configurazione non cambia.
Approfondisci: Cos'è Docker Compose?
# Come ricreo un container senza perdere i dati?
docker compose up -d --force-recreate <servizio>
I dati vivono nei volumi, non nel container: se i path importanti sono su volumi, ricreare è sempre sicuro.
Approfondisci: Qual è la differenza strutturale tra named volumes Docker persistenti e bind mounts per l'accesso ai file residenti sul filesystem host?Cos'è Docker Compose?
# Come elimino un container?
docker rm <nome> # -f se è in esecuzione
Rimuove il container, NON i volumi associati (quelli con -v, e con giudizio).
# Come elimino tutti i container fermi in un colpo?
docker container prune
Irreversibile: prima docker ps -a per sapere cosa stai buttando.
Approfondisci: Storage pieno su Proxmox: come liberare spazio senza disastri
# Come vedo la configurazione completa di un container?
docker inspect <nome>
Tutto il JSON; per un campo secco: docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' <nome>.
Approfondisci: Cos'è Docker Compose?
# Come controllo l'healthcheck di un container?
docker inspect --format '{{json .State.Health}}' <nome>
Mostra stato e ultimi probe, output del check incluso: lì c'è il perché dell'unhealthy.
Approfondisci: Cos'è Docker Compose?
# Come entro dentro un container?
docker exec -it <nome> sh # o bash, se c'è
Shell nel container in esecuzione; per un comando secco senza shell: docker exec <nome> <comando>.
Approfondisci: Cos'è un container breakout (evasione verso l'host)?
# Come copio file da e verso un container?
docker cp <nome>:/path/file ./file
docker cp ./file <nome>:/path/
Funziona anche a container fermo; controlla proprietario e permessi dopo la copia.
# Come vedo quanta CPU e RAM usano i container?
docker stats
Vista live di tutti i container; il limite di memoria mostrato è quello imposto, non la RAM dell'host.
Approfondisci: Cos'è Docker Compose?
# Come vedo i processi dentro un container?
docker top <nome>
I processi visti dall'host, senza entrare nel container.
Approfondisci: Cos'è Docker Compose?
# Come cambio i limiti di risorse a un container avviato?
docker update --memory 512m --memory-swap 512m --cpus 1.5 <nome>
Al volo, senza riavvio – ma se usi Compose riportalo nel file, o il prossimo up lo dimentica.
Approfondisci: Cos'è Docker Compose?
# Come vedo le ultime righe di log di un container?
docker logs --tail 100 <nome>
Senza --tail scarica TUTTO il log: su container vecchi può essere enorme.
Approfondisci: Come si configura la rotazione automatica dei file di log di Docker per prevenire la saturazione imprevista dello spazio su disco?
# Come seguo i log di un container in diretta?
docker logs -f --tail 50 <nome>
Ctrl+C stacca solo il follow: il container resta su.
Approfondisci: Come si configura la rotazione automatica dei file di log di Docker per prevenire la saturazione imprevista dello spazio su disco?
# Come filtro i log di un container per periodo o testo?
docker logs --since 1h <nome> 2>&1 | grep -i error
--since/--until accettano durate (1h) e timestamp ISO; il 2>&1 serve perché molte app loggano su stderr.
Approfondisci: Come si configura la rotazione automatica dei file di log di Docker per prevenire la saturazione imprevista dello spazio su disco?
# Come svuoto il log di un container cresciuto troppo?
truncate -s 0 $(docker inspect --format '{{.LogPath}}' <nome>)
Cura il sintomo: la cura vera è la rotazione (max-size/max-file) in daemon.json.
Approfondisci: Come si configura la rotazione automatica dei file di log di Docker per prevenire la saturazione imprevista dello spazio su disco?Storage pieno su Proxmox: come liberare spazio senza disastri
# Il container continua a riavviarsi: come lo debuggo?
docker logs --tail 50 <nome>
docker inspect --format 'restarts={{.RestartCount}} exit={{.State.ExitCode}}' <nome>
L'errore è quasi sempre nelle prime righe di log dopo l'avvio; exit code 1 = errore applicativo, non di Docker.
Approfondisci: Cos'è Docker Compose?
# Come capisco se un container è stato ucciso per memoria (OOM)?
docker inspect --format 'OOM={{.State.OOMKilled}} exit={{.State.ExitCode}}' <nome>
OOMKilled: true o exit code 137 = ucciso dal kernel: alza il limite o cerca la perdita di memoria.
Approfondisci: Cos'è Docker Compose?
# Cosa significano gli exit code dei container?
docker inspect --format '{{.State.ExitCode}}' <nome>
0 ok · 1 errore applicativo · 126/127 comando non eseguibile/non trovato · 137 SIGKILL (spesso OOM) · 143 SIGTERM.
Approfondisci: Cos'è Docker Compose?