Como verificar o uso do espaço em disco para imagens e contêineres do Docker

Com aplicativos em contêiner sendo executados em ambientes isolados, pode ser mais difícil do que o normal rastrear problemas com aplicativos que usam muito espaço de armazenamento. Felizmente, o Docker fornece comandos para gerenciar o uso do disco do contêiner.
Fazendo uma verificação rápida
E se você quiser verificar quanto espaço o Docker está usando, você pode usar o comando interno docker system df, bem como o comando du do Linux para obter o tamanho de todo o diretório.
sistema docker df sudo du -sh / var / lib / docker /

Este comando mostra imagens estáticas, contêineres que fizeram alterações em seu sistema de arquivos (por exemplo, arquivos de log) e volumes vinculados aos contêineres.
No entanto, isso não é totalmente preciso — aqui, tenho muitos contêineres em execução, mas todos eles armazenam dados em montagens de ligação no sistema operacional host, não volumes.
Limpando imagens do Docker
As imagens do Docker são diferentes dos contêineres em execução; eles são os arquivos que você baixa do Docker Hub para iniciar um contêiner. Eles geralmente são muito grandes, contendo todo o código necessário para executar um sistema operacional básico e seu aplicativo.
Publicidade
Cada versão de uma imagem é separada, mas é armazenada em camadas, portanto, várias novas versões não ocuparão o dobro do espaço de armazenamento. Você pode ver todas as imagens com ls de imagem:
imagem docker ls

Limpar isso é fácil; você não deseja remover imagens de contêineres em execução, é claro, mas remover imagens antigas é bom — elas serão simplesmente baixadas novamente quando necessário.
Você pode remover todas as imagens ou excluir manualmente uma por ID:
docker image prune -a docker image rm 3a8d8f76e7f8f
Verificando o uso do contêiner em execução
Os contêineres são um pouco mais difíceis de rastrear, pois podem usar dados de muitas maneiras diferentes:
- Imagem subjacente: cada contêiner precisará armazenar sua imagem, mas ela é reutilizada entre os contêineres.
- Camada de modificação: se um contêiner grava em seu sistema de arquivos, como arquivos de log, será salvo em uma nova camada sobre a imagem subjacente. Isso é exclusivo para cada contêiner.
- Volumes: os contêineres podem ter unidades virtuais montadas neles, que armazenam dados diretamente no disco fora do sistema de armazenamento Docker.
- Montagens Bind: os contêineres podem, opcionalmente, acessar diretórios no host diretamente.
Tudo, exceto montagens de ligação, aparecerá na saída df do sistema docker. Se você deseja visualizar as estatísticas de cada contêiner, o Docker fornece um sinalizador para o comando ps para listar o uso:
docker ps --size

Aqui, isso mostra o tamanho no disco, bem como o tamanho virtual (que inclui a imagem subjacente compartilhada). Como esses contêineres não estão usando nenhum armazenamento fora de suas montagens de ligação, o tamanho é zero bytes.
Depurando montagens (ligações e volumes)
Para visualizar o uso da montagem, tanto para montagens de ligação direta quanto para volumes gerenciados, você &’ terá que obter o tamanho deles no sistema operacional host. Se você não souber onde eles estão, execute docker container ls para obter a ID de um contêiner e, em seguida, execute docker inspect para obter as informações de montagem:
docker inspect a1c904020044 -f '{}' [{"Type": "bind", "Source": "/ home / daemon-data / 921ff235-5075-4d64-b977-8d02cc3dacc9", "Destino ":" / home / container "," Mode ":" "," RW ": true," Propagation ":" rprivate "}]
Publicidade
Então, você pode verificar o tamanho total com du -sh:
sudo du -sh / caminho / para / montar /
Recipientes e volumes de poda
O Docker nunca remove contêineres ou volumes (a menos que você execute contêineres com o sinalizador --rm), pois isso pode perder seus dados. No entanto, você pode ter feito backup de dados antigos que precisam ser coletados como lixo.
Muito parecido com as imagens, o Docker fornece um comando prune para contêineres e volumes:
docker container prune docker volume prune
Depuração manual
Se você tiver acesso direto ao servidor que executa o Docker, pode abrir um shell no contêiner:
sudo docker exec -it containerID / bin / bash
e execute du -sh em tudo, o que retornará todos os dados, incluindo o tamanho da imagem, dados em montagens de ligação e dados em volumes.
sudo du -sh /
Nenhum comentário