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.
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. A lista do WSL identifica distribuições locais e versões. A documentação do backend WSL do Docker 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 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 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.
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 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 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. Cancelar o registro de uma distribuição remove os dados dela; não é um passo rotineiro de limpeza de espaço.
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 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 para caches comuns de pacotes.