Docker prune no Mac: libere espaço sem perder os seus dados
Rode docker system df para ver o que dá para recuperar e depois docker system prune, que remove containers parados, redes sem uso, imagens órfãs (dangling) e cache de build sem uso. Adicione -a só se você aceita baixar imagens de novo, e --volumes só se você sabe o que tem nos seus volumes anônimos. No Mac, tudo isso fica dentro de uma única imagem de disco do Docker Desktop: apague dados com comandos do Docker, nunca mexendo nesse arquivo.
No Mac, o Docker Desktop roda Linux dentro de uma pequena máquina virtual. Cada imagem que você baixa, cada container que você para e cada camada que você constrói fica dentro de um único arquivo de imagem de disco. Esse arquivo cresce sem fazer barulho, e o Finder não consegue mostrar o que tem dentro. Este guia mostra como medir o uso do Docker, qual comando prune rodar, o que cada opção apaga e como a própria imagem de disco funciona.
Passo 1: veja o que o Docker está usando
Comece com um comando que só lê:
docker system df
Ele mostra uma tabela com Images, Containers, Local Volumes e Build Cache, com as colunas Total, Active, Size e Reclaimable (docker system df). Reclaimable é o espaço que você pode recuperar sem mexer no que está em uso.
Para ver os detalhes por imagem, container e volume:
docker system df -v
Olhe três coisas:
- Imagens sem nenhum container rodando. Algumas são “dangling” (órfãs): camadas antigas sem tag, que normalmente sobram depois de um rebuild.
- Build Cache. Em máquinas que constroem imagens com frequência, essa costuma ser a maior linha.
- Local Volumes. Normalmente guardam dados reais, como um banco Postgres ou MySQL local. Trate com cuidado.
Passo 2: o prune padrão
A limpeza padrão é:
docker system prune
Segundo a referência oficial, ele remove:
- todos os containers parados
- todas as redes que não são usadas por pelo menos um container
- todas as imagens dangling
- o cache de build sem uso
Os volumes não são removidos por padrão. O Docker pede confirmação antes de apagar qualquer coisa.
Faça o prune só do que é antigo
Se você quer manter o trabalho recente, filtre pela idade. O filtro until aceita durações como 24h:
docker system prune --filter "until=24h"
Isso remove só containers, imagens e redes criados há mais de 24 horas.
Passo 3: opções mais agressivas
Remova todas as imagens sem uso com -a
docker system prune -a
Com -a, o Docker remove toda imagem que não tem pelo menos um container associado, não só as dangling, e todo o cache de build.
Remova volumes anônimos com –volumes
docker system prune --volumes
Com --volumes, o Docker também remove os volumes anônimos que não são usados por pelo menos um container.
Juntar as duas, docker system prune -a --volumes, é a opção mais destrutiva. Use só em uma máquina onde você consegue reconstruir tudo do zero.
Passo 4: limpe só o cache de build
Se o docker system df mostra que o problema é o Build Cache, você não precisa mexer em imagens nem em containers:
docker builder prune
Por padrão, ele remove só o cache de build dangling (docker builder prune). Opções úteis:
-aremove todo o cache de build sem uso, não só as entradas dangling.--filter until=24hmantém o cache recente.--keep-storagemantém uma quantidade definida de cache, por exemplo--keep-storage 10GB, para os builds frequentes continuarem rápidos.
Passo 5: entenda a imagem de disco do Docker Desktop
No Mac, o Docker Desktop guarda todos os containers e imagens Linux em um único arquivo de imagem de disco. A documentação do Docker mostra esse arquivo em ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw (Docker Desktop for Mac FAQs). Você vê a localização dele em Settings > Resources > Advanced.
O tamanho real é menor do que parece
O Docker.raw é um arquivo esparso. O Docker avisa que muitas ferramentas mostram o tamanho máximo do arquivo, não o tamanho real. Para ver o tamanho real, rode isto nessa pasta:
cd ~/Library/Containers/com.docker.docker/Data/vms/0/data
ls -klsh Docker.raw
A primeira coluna é o espaço usado de verdade; a coluna de tamanho é o máximo.
O prune libera espaço, apagar arquivos dentro dos containers não
O Docker diz que o espaço só é liberado quando as imagens são apagadas. Para um arquivo Docker.raw, o espaço normalmente volta para o macOS em poucos segundos. Se não voltar, o Docker documenta este comando para forçar isso:
docker run --privileged --pid=host docker/desktop-reclaim-space
O limite de uso de disco nos Settings
Em Settings > Resources > Advanced, o Docker Desktop deixa você definir o espaço máximo em disco que o engine pode usar (Docker Desktop settings). Aumentar dá mais espaço ao Docker. Diminuir não é uma ferramenta de limpeza:
Nunca apague o Docker.raw na mão
Apagar ou mover o arquivo pelo Finder é o mesmo que zerar o Docker: imagens, containers e volumes vão junto. Se você quer começar do zero, use de propósito a opção de redefinição do próprio Docker, sabendo o que vai perder. Para a limpeza do dia a dia, os comandos prune bastam.
Uma rotina segura
docker system dfpara ver o que dá para recuperar.docker system pruneuma vez por semana, ou com--filter until=168hpara manter a última semana.docker builder prunequando o cache de build crescer.-ae--volumessó quando você sabe o que vai perder.
Rode docker system df de novo depois de cada passo para ver quanto espaço voltou.
Próximos passos
O Docker raramente é a única ferramenta de desenvolvimento que enche o seu disco. Se você cria apps para Apple, leia como apagar o DerivedData do Xcode com segurança. Para projetos JavaScript, veja como limpar node_modules e os caches do npm, pnpm e yarn. E para o resto do seu Mac, comece por como liberar espaço no Mac ou experimente o Pruneo, que é grátis.
Perguntas frequentes
O docker system prune apaga volumes?
Não por padrão. Os volumes são mantidos, a menos que você adicione --volumes, e mesmo assim o Docker só remove volumes anônimos que nenhum container usa.
Por que o Docker.raw é tão grande no meu Mac?
Muitas ferramentas mostram o tamanho máximo da imagem de disco, não o espaço que ela usa de verdade. O Docker documenta ls -klsh Docker.raw para ver o tamanho real na primeira coluna.
Posso simplesmente apagar o Docker.raw?
Apagar esse arquivo remove todos os seus containers, imagens e volumes de uma vez. Use os comandos prune, ou redefina o Docker Desktop de propósito se você quer mesmo começar do zero.
Qual a diferença entre docker system prune e docker builder prune?
O docker system prune limpa containers, redes, imagens e cache de build juntos. O docker builder prune limpa só o cache de build, que muitas vezes é a maior parte.