Guies de Levo · Desenvolupadors: la resta

Docker ocupa massa espai al disc del Mac

Docker en un Mac ho desa tot en un únic fitxer de disc virtual gran, Docker.raw, i aquest fitxer creix però no s'encongeix sol. Executa docker system df per veure què l'ocupa, i després docker system prune i docker builder prune per alliberar-lo.

La llista Ready to free (llest per alliberar) de Levo amb imatges de Docker i memòria cau de compilació, cadascuna amb una mida i un motiu
QuèCom veure-hoEs pot esborrar?
Contenidors aturatsdocker ps -aSí, tret que necessitis el que hi ha dins d'algun
Imatges sense úsdocker imagesSí, es baixen o es reconstrueixen a demanda
Memòria cau de compilaciódocker builder duSí, la propera compilació és més lenta
Volumsdocker volume lsCompte. Aquí hi viu una base de dades
El fitxer del disc~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.rawMai a mà

Per què Docker.raw és tan gran

Els contenidors s'executen en una petita màquina virtual Linux, i el disc d'aquesta màquina és un sol fitxer al teu Mac. Docker Desktop fixa una mida màxima, sovint de 60 GB o més, i el fitxer creix cap a aquest límit a mesura que baixes imatges i compiles. Al Finder pot semblar molt més gran del que és, perquè és un fitxer dispers (sparse): ls -lh mostra el màxim, du -sh mostra el que s'usa de debò.

El problema és que esborrar imatges allibera espai dins de la màquina virtual, però el fitxer del teu Mac no s'encongeix de seguida. Les versions recents de Docker Desktop tornen els blocs alliberats a macOS, però en configuracions més antigues o després de molt moviment potser hauràs de redimensionar el disc o restablir-lo des de Settings › Resources.

Com fer-ho tu mateix

Mira què ocupa l'espai

docker system df
docker system df -v

La primera ordre dona els totals d'imatges, contenidors, volums i memòria cau de compilació, amb una columna RECLAIMABLE. La segona llista cada element. La memòria cau de compilació és la silenciosa: després d'unes setmanes de compilacions sol ser la línia més gran.

Allibera-ho

docker container prune
docker image prune -a
docker builder prune
docker system prune

Els volums són on viuen les bases de dades, els fitxers pujats i tot el que el teu fitxer compose munta en un volum amb nom. docker system prune --volumes elimina tots els volums que cap contenidor fa servir ara mateix, inclòs el de Postgres del projecte que obriràs la setmana que ve. Llista'ls amb docker volume ls i elimina'n un a un amb docker volume rm <name> després de comprovar-ho.

Torna l'espai a macOS

Després del prune, torna a mirar la mida real.

du -sh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

Si continua sent enorme, obre Docker Desktop, ves a Settings › Resources i baixa el Virtual disk limit, o tria Troubleshoot › Clean / Purge data per començar de zero. La segona opció esborra totes les teves imatges, contenidors i volums. No arrosseguis Docker.raw a la Paperera mentre Docker està en marxa: perds tot el que conté i pots corrompre la màquina virtual.

OrbStack, Colima i Podman

Les mateixes ordres funcionen, perquè totes parlen l'API de Docker. El que canvia és on viu el disc.

Si ja no fas servir Docker per a res, mira com desinstal·lar Docker en un Mac. Per fer una ullada més àmplia a la resta de les teves eines, hi ha la neteja del disc per a desenvolupadors.

Com ho fa Levo

Levo mostra les imatges de Docker i la memòria cau de compilació com a tipus propis a Ready to free (llest per alliberar), amb mides i motius. Les troba amb el seu índex en directe del teu disc, així que les veus sense executar cap ordre i sense haver de recordar quina de les quatre ordres prune cal fer servir.

El teu agent jutja què és segur. Les imatges que no fa servir res i la memòria cau de compilació són candidats habituals. Els volums poden contenir dades que no pots recuperar, així que mira-te'ls tu mateix, i Levo no neteja mai res que s'estigui fent servir. L'agent només llegeix, i Levo fa l'esborrat després de tornar a comprovar.

Tries un nivell de neteja, marques el que se'n va i prems Clean up. Si desinstal·les Docker Desktop amb Levo, el pas de confirmació llista les restes grans perquè les vegis abans que se'n vagin. Mira Levo per a desenvolupadors web. Dues neteges són gratis, i després hi ha una llicència de per vida.

Preguntes freqüents

És segur executar docker system prune?

Sí per a contenidors, xarxes, imatges òrfenes (dangling) i memòria cau de compilació, però la propera compilació serà més lenta i algunes imatges es tornaran a baixar. No toca els volums tret que afegeixis --volumes, que és l'opció amb què has d'anar amb compte.

Per què Docker.raw continua enorme després d'esborrar imatges?

El fitxer és dispers (sparse) i no sempre s'encongeix quan s'allibera espai dins de la màquina virtual. Mira'n la mida real amb du -sh. Si continua sent gran, baixa el límit del disc virtual als ajustos de Resources de Docker Desktop o esborra'n les dades (purge).

Puc esborrar Docker.raw?

Només des del menú Troubleshoot de Docker Desktop amb Docker en marxa, o després de tancar-lo i desinstal·lar-lo. Esborrar el fitxer a mà elimina totes les imatges, contenidors i volums que conté.

Quant d'espai necessita Docker en un Mac?

Depèn del que facis servir. Compta de 20 a 60 GB si construeixes moltes imatges. El límit del disc virtual de Docker Desktop fixa el sostre.

OrbStack fa servir menys disc que Docker Desktop?

Normalment sí, perquè creix i s'encongeix a demanda i comparteix fitxers amb macOS. Tot i així guarda imatges, memòria cau de compilació i volums, així que docker system df i prune també s'hi apliquen.