# Espaço em disco do Docker e do WSL no Windows: camadas, volumes e limpeza segura

O Docker informa uma redução grande depois da limpeza, mas C: não ganha na hora o mesmo espaço. Identifique a camada que está sendo medida. Os recursos do Docker vivem dentro do ambiente dele; um sistema de arquivos Linux pode viver dentro de um disco virtual; o Windows vê esse disco como um arquivo. Espaço reutilizável dentro do ambiente é diferente da capacidade liberada no host.

## Identifique o ambiente primeiro

Inspecione o contexto atual do Docker e o inventário de armazenamento. Estes comandos leem informação sem excluir recursos.

```powershell
docker context show
docker system df -v
docker ps -a
docker volume ls
wsl --list --verbose
```

Uma conexão remota do Docker informa recursos remotos, não o uso local de C:. Confira também se `DOCKER_HOST` ou `DOCKER_CONTEXT` está definido; variáveis de ambiente podem substituir o alvo da conexão, como descreve a [documentação de contexto](https://docs.docker.com/engine/manage-resources/contexts/). A lista do WSL identifica distribuições locais e versões. A [documentação do backend WSL do Docker](https://docs.docker.com/desktop/features/wsl/) explica que a disposição dos dados depende do histórico de instalação; não suponha que todo PC tenha a mesma distribuição de dados do Docker.

## Camadas de imagem compartilhadas mudam a conta

A [referência de uso de disco do Docker](https://docs.docker.com/reference/cli/docker/system/df/) separa tamanhos de imagem compartilhados e únicos. Imagens podem reutilizar camadas, então remover uma não precisa liberar o total exibido. Reclaimable descreve candidatos sob as relações de referência atuais, não uma garantia de que o conteúdo é indesejado.

| Recurso | Conteúdo típico | Confira antes de remover |
| --- | --- | --- |
| Imagens | Camadas de runtime e de aplicativo | Dá para baixá-las ou reconstruí-las, e outros contêineres as usam? |
| Contêineres | Instâncias e camadas graváveis | Um contêiner parado guarda conteúdo não exportado? |
| Cache de build | Resultados de build reutilizáveis | O próximo build consegue baixar e recalcular o que precisa? |
| Volumes | Bancos de dados persistentes ou arquivos enviados | Qual projeto é o dono, e a recuperação foi verificada? |

Num exemplo hipotético, duas imagens de 2 GB compartilham 1,5 GB. Remover uma não implica um ganho de 2 GB. Um volume sem referência de contêiner atual ainda pode conter o banco de dados que você acabou de parar.

## Mire o cache de build quando esse for o problema

Confira se a origem, as fontes de dependência e a configuração de build continuam disponíveis. Se você aceita reconstruir os resultados em cache, o [comando builder-prune do Docker](https://docs.docker.com/reference/cli/docker/builder/prune/) mira o cache de build. O comando a seguir exclui o cache elegível: leia o pedido dele antes de aceitar, e mantenha a confirmação interativa ligada.

```powershell
docker builder prune
```

O escopo dele é mais estreito que `docker system prune`, que também mira contêineres parados, imagens selecionadas e redes. [Opções adicionais de system-prune](https://docs.docker.com/reference/cli/docker/system/prune/) ampliam a remoção ainda mais. Evite um comando universal para todo projeto. Com vários builders, identifique o builder selecionado; limpar um ambiente não prova que os outros foram tratados.

## Faça backup dos dados persistentes à parte

Exporte bancos de dados com as ferramentas deles e verifique a restauração num ambiente isolado. O [guia de backup do Docker](https://docs.docker.com/desktop/settings-and-maintenance/backup-and-restore/) separa dados de imagem e de volume. Salvar ou fazer commit de uma imagem não inclui arquivos em volumes anexados. Um arquivo Compose descreve configuração, não guarda o conteúdo do banco de dados.

Para um backup completo do disco virtual do Docker Desktop, siga o procedimento documentado de desligamento, identifique o backend e o local de dados configurado, depois copie o arquivo certo. Um VHDX que está mudando não é um backup estável. Faça backup das distribuições pessoais do WSL à parte, usando a [orientação de exportação do WSL](https://learn.microsoft.com/en-us/windows/wsl/basic-commands). Cancelar o registro de uma distribuição remove os dados dela; não é um passo rotineiro de limpeza de espaço.

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-docker-wsl-disk-space-windows-en-mobile.webp" type="image/webp" width="768" height="1500">
    <img src="/img/blog/windows-docker-wsl-disk-space-windows-en.webp" width="1360" height="454" loading="lazy" alt="Recursos do Docker têm necessidades de retenção diferentes">
  </picture>
  <figcaption>Um volume sem referência ainda pode guardar dados valiosos; camadas de imagem compartilhadas também limitam o que uma remoção libera.</figcaption>
</figure>

## Compare as camadas do Linux e do Windows

Dentro da sua própria distribuição, `df -h /` informa o uso do sistema de arquivos raiz, enquanto `du -h --max-depth=1 /home` ajuda a localizar o crescimento de diretórios do usuário. O segundo comando não é um total de todo o sistema, e permissões e outros diretórios limitam a cobertura. Comece por um diretório grande conhecido, em vez de percorrer toda unidade montada.

O [guia de armazenamento do WSL](https://learn.microsoft.com/en-us/windows/wsl/disk-space) da Microsoft explica o crescimento dinâmico do VHD. O teto de capacidade do Linux não é o uso alocado do Windows. Uma exclusão pode aumentar o espaço interno reutilizável sem encolher na hora o arquivo externo. Para recuperar do lado do host, confira as versões atuais do WSL e do Docker e os procedimentos suportados. Evite apagar ou mover discos virtuais em AppData, e não confunda aumentar um limite de capacidade com liberar C:. Para recuperar o arquivo do host, libere espaço dentro da distribuição primeiro, depois compacte o disco virtual seguindo o guia de espaço em disco do WSL da Microsoft e as configurações de imagem de disco do próprio Docker Desktop; o comando exato depende da versão do WSL e do backend do Docker, então use os passos da sua versão em vez de copiar um comando só.

Depois da limpeza, repita `docker system df -v`, execute os serviços que você mantém, inspecione os registros do banco de dados e conclua o build original. Confira as leituras do Docker, do Linux e do Windows separadamente. A página Analisar do Mole pode localizar arquivos grandes; o gerenciamento de recursos e de discos virtuais pertence às ferramentas donas. Veja o [guia de caches de desenvolvimento](/pt-br/windows/blog/windows-developer-caches) para caches comuns de pacotes.


Canonical: https://mole.fit/pt-br/windows/blog/docker-wsl-disk-space-windows
