1. Chiedi a Docker i suoi totali
Parti sempre da qui. Divide immagini, container, volumi e cache di build, e ti dice quanto di ciascuno è recuperabile.
docker system df -v
Docker Desktop tiene tutto in un file. Cresce a ogni build, e cancellare immagini non lo rende più piccolo. Ecco perché, e cosa recupera davvero lo spazio.
Gratis da scaricare e scansionare. Pulire richiede una licenza: un pagamento per computer, Mac o Windows.

Su un Mac, Docker Desktop tiene tutto dentro una macchina virtuale Linux, e l'intero disco di quella macchina è un unico file sparse:
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
Controlla la dimensione reale su disco — non quella logica, che è sempre il massimo che hai concesso a Docker:
du -h -d0 ~/Library/Containers/com.docker.docker/Data/vms/0/data/
Elimina un'immagine e lo spazio si libera solo dentro la macchina virtuale. Il file sul tuo Mac resta grande com'era, perché macOS gli ha già assegnato tutto quello spazio. Le versioni recenti di Docker Desktop inviano TRIM dall'interno della VM, cosa che permette a macOS di recuperare i blocchi liberati, ma succede con i tempi di Docker e non nel momento in cui fai il prune. Fino ad allora, docker system df riporta gigabyte liberati mentre il Finder non mostra alcun cambiamento.
In ordine: prima il meno distruttivo.
Parti sempre da qui. Divide immagini, container, volumi e cache di build, e ti dice quanto di ciascuno è recuperabile.
docker system df -v
Su una macchina che costruisce immagini regolarmente questa è di solito la voce più grande e la più sicura da rimuovere: rende solo più lenta la build successiva.
docker builder prune -a
Container fermi, immagini orfane e reti inutilizzate:
docker system prune
Aggiungi -a per rimuovere anche ogni immagine non usata da un container in esecuzione — il che significa riscaricarle dopo. Aggiungi quanto segue --volumes solo se sei certo: nei volumi è dove i database tengono i loro dati, ed è l'unico comando di questa pagina che distrugge qualcosa che non puoi riscaricare.
Guarda cosa sparirebbe davvero:
docker volume ls
docker volume ls -f dangling=true
Dopo il prune, Docker Desktop ha un modo previsto per restituire i blocchi liberati: Impostazioni → Risorse → Avanzate → Utilizzo disco, oppure uscire e riaprire Docker Desktop, che all'avvio innesca il TRIM. Dagli un minuto e ricontrolla la dimensione del file prima di decidere che non ha funzionato.
In Impostazioni → Risorseil limite del disco virtuale è quanto Docker.raw può crescere. Abbassarlo non libera nulla di per sé, ma mette un tetto al problema. Averlo alzato «per sicurezza» è il motivo per cui il file ha raggiunto 64 GB.
Impostazioni → Risoluzione dei problemi → Clean / Purge data azzera completamente il disco della macchina virtuale e riporta il file quasi a zero. Cancella ogni immagine, container e volume che hai. Usalo quando nient'altro ha funzionato e sai cosa c'è nei tuoi volumi.
Non cancellare Docker.raw dal Finder. Non è un file di cache: sono i dati dell'intera installazione di Docker, e rimuoverlo mentre Docker è in esecuzione può lasciare la macchina virtuale in uno stato che richiederà comunque un ripristino.
Sul Mac dove Docker è arrivato a 50 GB, DerivedData di Xcode e i modelli di IA locali sono di solito subito dietro. Se stai recuperando spazio, conviene misurare l'intero disco una volta invece di sistemare una cosa alla volta. La lista completa
Su Linux Docker scrive direttamente in /var/lib/docker, quindi un prune libera lo spazio subito e nulla del problema di TRIM qui sopra si applica. Pulizia del disco su Linux
Non dal Finder, e non mentre Docker è in esecuzione. Quel singolo file è ogni immagine, container e volume che hai. Se vuoi davvero ripartire da zero, usa Risoluzione dei problemi → Clean / Purge data in Docker Desktop, che fa la stessa cosa in un modo che Docker conosce.
Perché ha liberato 20 GB dentro il file system della macchina virtuale, non sul tuo Mac. Il file mantiene la sua dimensione finché il TRIM non viene eseguito e macOS non recupera i blocchi. Uscire e riaprire Docker Desktop di solito lo innesca.
Solo se aggiungi --volumes. Senza quel flag lascia stare i volumi. Con esso sparisce ogni volume non collegato a un container, e il volume di un database fermo conta come non collegato.
Non c'è una risposta giusta, ma su una macchina con qualche progetto attivo da 15 a 25 GB è normale, e 60 GB significa che la cache di build non è mai stata svuotata. Controlla con docker system df -v prima di dare per scontato che siano le immagini.
Pezzi più brevi che approfondiscono una parte di questa guida.