Disinstallare Docker Desktop senza perdere i volumi
Docker Desktop non è un'unica app. È un'interfaccia grafica, una macchina virtuale in background, un insieme di
strumenti a riga di comando collegati in /usr/local/bin, e un'immagine disco che cresce senza farsi notare
fino a decine di gigabyte. Trascinarlo nel Cestino rimuove solo la prima di queste parti e lascia
il resto.
C'è pure l'inverso rispetto alla maggior parte delle disinstallazioni: eseguire il programma di disinstallazione ufficiale è il passo distruttivo, non la pulizia successiva. Ecco l'ordine che protegge i tuoi dati, e come distinguere i residui usa e getta da quelli che vorrai recuperare.
La disinstallazione distrugge container, immagini e volumi
Docker lo dichiara chiaramente: disinstallare Docker Desktop distrugge container, immagini, volumi e altri dati Docker locali della macchina. Non si può annullare e non passa dal Cestino. Nessun secondo avviso.
Gran parte di tutto questo è ricostruibile. Le immagini si scaricano di nuovo, i container si ricostruiscono da un Dockerfile. L'eccezione sono i volumi con nome, dove un database locale conserva i propri dati. Un container Postgres o MySQL su cui sviluppi da mesi conserva i dati in un volume, non nell'immagine, e quel volume viene eliminato insieme a tutto il resto.
Prima di qualsiasi altra cosa, elenca ciò che esiste:
docker volume ls
Se un volume ti interessa, fanne il backup prima di disinstallare, non dopo:
docker run --rm -v <volume>:/from -v "$PWD":/to alpine \
tar czf /to/<volume>.tgz -C /from .
Lo stesso vale per tutto ciò che hai creato e non hai mai caricato. docker image ls mostra ciò
che è locale; se non è in un registry, esiste solo su questo Mac.
Se ti serve spazio, potresti non dover disinstallare affatto
Docker tiene tutto in un'unica grande immagine disco virtuale, e di solito quel file è
il pezzo più grosso di Docker. Un pruning dentro Docker spesso recupera ciò che
cercavi lasciando lo strumento installato, e in più è
reversibile. Inizia con docker system df per vedere la ripartizione, poi leggi
Pulire Docker su Mac senza perdere dati, che
copre il pruning e il motivo per cui il file disco non si riduce da solo.
Se sei qui per rimuovere Docker definitivamente, continua.
Usa il programma di disinstallazione di Docker
Docker include un programma di disinstallazione e fa più che eliminare l'app. Arresta i servizi in background e rimuove i symlink a riga di comando che un trascinamento dal Finder lascia sul Mac.
Dall'app: apri Docker Desktop, seleziona l'icona Troubleshoot in alto a destra, scegli Uninstall e conferma. Da Terminal:
/Applications/Docker.app/Contents/MacOS/uninstall
Poi sposta Docker da Applicazioni al Cestino.
Se il programma di disinstallazione segnala operation not permitted, la documentazione di Docker dice che
puoi ignorarlo senza problemi: la disinstallazione si è comunque completata. Il messaggio viene da macOS
che protegge la cartella container dell'app, che il tuo Terminal non può toccare senza Accesso
completo al disco.
Cosa resta, e di chi è
Dopo che il programma di disinstallazione ha terminato, alcune cartelle restano. Docker ne nomina due:
~/Library/Group Containers/group.com.docker
~/.docker
Non sono la stessa cosa, e la differenza conta.
~/.docker è la tua configurazione. Contiene contesti, impostazioni del daemon e
credenziali dei registry da docker login. Se reinstallerai Docker in seguito, o passerai a
Colima, Rancher Desktop o OrbStack, questa è la cartella che potresti voler tenere. Eliminarla
significa effettuare di nuovo il login a ogni registry.
~/Library/Group Containers/group.com.docker e la cartella container dell'app contengono lo
stato della macchina virtuale e l'immagine disco. È qui che stanno le decine di gigabyte.
Una volta messo in conto che container e volumi sono spariti, questa è la parte
che vale la pena rimuovere.
Oltre a queste due, Docker lascia le solite tracce di macOS: cache, log, preferenze e
stato salvato delle applicazioni sotto la tua Libreria. Queste sono usa e getta. Non si tratta di
eliminare ogni file con docker nel nome, ma di sapere quale di essi è una cache e
quale è una credenziale.
Conferma che sia davvero sparito
Due controlli. Primo, che non sia ancora in esecuzione nulla:
pgrep -fl -i docker
Secondo, che gli strumenti a riga di comando siano scollegati:
which docker docker-compose
Entrambi non dovrebbero restituire nulla. Se docker punta ancora a un eseguibile, probabilmente hai una copia
Homebrew della CLI installata separatamente, che è un pacchetto diverso e sopravvive al programma di
disinstallazione di Docker Desktop di proposito. brew list | grep docker te lo dirà.
Il modo più rapido per vedere tutto in una volta
Il percorso manuale funziona, ma ti chiede di sapere già quali percorsi esistono e quali di essi sono i tuoi dati. È la parte che le guide di solito saltano, ed è la parte che ti costa qualcosa quando va male.
Mole elenca ogni file che un'app lascia sul disco prima che qualcosa venga rimosso, raggruppato così puoi vedere cos'è davvero una cartella, con la sua dimensione accanto. Esamini l'insieme, deselezioni ciò che vuoi tenere, e ciò che rimuovi va nel Cestino invece di scomparire. Per Docker in particolare, l'immagine disco di solito rappresenta quasi tutto lo spazio recuperato, e vedere quel numero prima di confermare è la differenza tra una pulizia e una sorpresa.
Cosa torna dopo una reinstallazione
Le immagini e i container tornano, perché erano sempre riproducibili: le immagini si scaricano di nuovo, i container si ricostruiscono da un Dockerfile. I volumi con nome no. Sono l'unica cosa di cui non esiste una copia altrove, ed è per questo che il backup fatto prima vale la pena.
Conserva ~/.docker e con esso tornano i login al registry e i contesti, risparmiandoti un giro di docker login. Eliminalo e dovrai accedere di nuovo: costa solo tempo, nient'altro.
L'immagine del disco virtuale viene ricreata vuota. Torna a crescere man mano che scarichi di nuovo le immagini, quindi le decine di gigabyte liberate dalla disinstallazione sono per lo più temporanee se reinstalli e torni a usarlo come prima. Tenere basso quel numero nel lungo periodo è il compito di docker system prune, non di un ciclo di reinstallazione.