Guida allo spazio per sviluppatori

Docker occupa spazio sul mio Mac

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.

Prova gratuita di 14 giorni, senza carta. Poi 15 $ una volta per 3 computer, macOS e Linux.

Treemap di Bytesweep in cui l'immagine disco di Docker domina una cartella Inizio del Mac

Dov'è lo spazio

Su macOS Docker Desktop esegue una macchina virtuale Linux, e l'intero file system di quella macchina è un unico file sparso sul tuo Mac:

~/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/

Perché cancellare immagini non lo riduce

Rimuovere un'immagine libera blocchi dentro il file system della macchina virtuale, ma il file sul tuo Mac mantiene la sua dimensione: quello spazio se l'è già preso da macOS. Le versioni recenti di Docker Desktop emettono TRIM dall'interno della macchina, il che permette a macOS di recuperare i blocchi liberati, ma accade secondo 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.

Riprendersi lo spazio

In ordine: prima il meno distruttivo.

1. Vedere cosa Docker pensa di usare

Parti sempre da qui. Divide immagini, container, volumi e cache di build, e ti dice quanto di ciascuno è recuperabile.

docker system df -v

2. Svuotare la cache di build

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

3. Ripulire ciò che davvero non è usato

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.

4. Elenca i volumi prima di toccarli

Guarda cosa sparirebbe davvero:

docker volume ls
docker volume ls -f dangling=true

Docker raramente è l'unica cosa

Puoi eseguire ogni comando di questa pagina, e sullo stesso Mac DerivedData di Xcode e qualche peso di modello dimenticato sono di solito altrettanto grandi. Bytesweep misura la dimensione reale di Docker su disco accanto a tutti loro in un passaggio da dieci secondi, così sistemi il disco una volta invece di rincorrerlo strumento per strumento.

5. Far recuperare il file a macOS

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.

6. Abbassare il limite del disco

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.

7. L'ultima risorsa

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.

Vale la pena controllare anche

Docker raramente è solo

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 non c'è un file immagine

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 →

Vedere Docker accanto a tutto il resto

Bytesweep misura la dimensione reale di Docker su disco, la mostra accanto a Xcode, ai simulatori, a node_modules e ai pesi dei modelli, e segnala cosa si può togliere senza rischi — senza toccare i tuoi volumi.

Domande

È sicuro cancellare Docker.raw?

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é docker system prune dice di aver liberato 20 GB se non è cambiato nulla?

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.

docker system prune cancella i miei database?

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.

Quanto dovrebbe essere grande Docker.raw?

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.