Logo do PruneoPruneo

Docker prune no Mac: libere espaço sem perder os seus dados

Resposta curta

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:

  1. Imagens sem nenhum container rodando. Algumas são “dangling” (órfãs): camadas antigas sem tag, que normalmente sobram depois de um rebuild.
  2. Build Cache. Em máquinas que constroem imagens com frequência, essa costuma ser a maior linha.
  3. 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:

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:

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

  1. docker system df para ver o que dá para recuperar.
  2. docker system prune uma vez por semana, ou com --filter until=168h para manter a última semana.
  3. docker builder prune quando o cache de build crescer.
  4. -a e --volumes só 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.

Experimente com o Pruneo

Grátis para macOS 14 ou posterior. Tudo o que ele limpa pode ser recuperado na quarentena.

Pruneo é para Mac

Envie o link para você e baixe no seu Mac. É grátis e sem conta.

Enviar por e-mail
Baixar mesmo assim