janela de encaixe limpar espaço em disco

Limpe o espaço em disco ocupado pelo Docker

        </h1>
        <div class="clear"></div>
        <div class="postBody">

O Docker ocupa muito espaço: sempre que executar contêineres, extrair imagens, implantar aplicativos e criar nossas próprias imagens, nosso espaço em disco será consumido bastante.
Se você também estiver preocupado com esse problema, vamos dar uma olhada em como o Docker usa o espaço em disco e como reciclá-lo.
O espaço ocupado pela janela de encaixe pode ser visualizado pelo seguinte comando:

$ docker system df

TYPE lista 4 tipos de discos usados ​​pela janela de encaixe:

  • Imagens : o espaço ocupado por todas as imagens, incluindo as extraídas e as construídas localmente.

  • Contêineres : o espaço ocupado pela execução de contêineres, representando o espaço da camada de leitura e gravação de cada contêiner.

  • Volumes locais : espaço para contêineres para montar volumes de dados locais.

  • Cache de compilação : espaço em cache gerado durante o processo de compilação da imagem (disponível apenas ao usar o BuildKit, disponível após o Docker 18.09).
    O último RECLAIMABLE é o tamanho reciclável.
    Vamos dar uma olhada nesses tipos separadamente.
    Uso do disco do contêiner
    Cada vez que um contêiner é criado, alguns arquivos e diretórios são criados, por exemplo:

  • / var / lib / docker / containers / ID, se o contêiner usar o modo de log padrão, todos os seus logs serão salvos nesse diretório no formato JSON.

  • O diretório / var / lib / docker / overlay2 contém a camada de leitura e gravação do contêiner.Se o contêiner usar seu próprio sistema de arquivos para salvar dados, ele será gravado nesse diretório.
    Agora começamos com um sistema completamente limpo, assumindo que o docker tenha sido instalado:

    primeiro, iniciamos um contêiner NGINX:

Agora, depois de executar o comando df, você verá:
um espelho, 126MB

Um contêiner

Não há espaço recuperável no momento, porque o contêiner está em execução e a imagem está sendo usada.
Agora, criamos um arquivo vazio de 100 MB no contêiner:

$ docker exec -ti www \
  dd if=/dev/zero of=test.img bs=1024 count=0 seek=$[1024*100]

Verifique o espaço novamente:

Você pode ver que o espaço ocupado pelo contêiner aumentou. Onde esse arquivo está armazenado nesta máquina?

Como mencionado acima, ele é armazenado na camada de leitura e gravação do contêiner.
Quando o contêiner é parado, o espaço ocupado pelo contêiner se torna reciclável:

Como reciclar? Quando um contêiner é excluído, o espaço ocupado por sua camada de leitura e gravação associada é excluído.
Você também pode excluir todos os contêineres parados com um clique:

$ docker container prune

Após excluir o contêiner, a imagem também pode ser reciclada:

O comando de remoção do contêiner do docker acima é excluir o contêiner parado. Se você deseja excluir todos os contêineres (incluindo parado e em execução), pode usar os dois comandos a seguir:

$ docker rm -f $(docker ps -aq)
$ docker container rm -f $(docker container ls -aq)

Espelhar o uso do disco

Algumas imagens são invisíveis:

  • Um sub-espelho é um espelho intermediário que é referenciado por outros espelhos e não pode ser excluído.

  • O espelho no estado suspenso, ou seja, o espelho que não será mais usado, pode ser excluído.
    O comando a seguir lista todos os espelhos suspensos:

$ docker image ls -f dangling=true

Exclua esses espelhos:

$ docker image rm $(docker image ls -f dangling=true -q)
或者:
$ docker image prune

Se você deseja excluir todos os espelhos, use o seguinte comando:
do c k e r i m a ge r mdockerimagerm (imagem docker ls -q)
Observe que aimagem queestá sendo usada pelo contêiner não pode ser excluída.

Uso do disco do volume de dados

O volume de dados é o armazenamento de dados fora do sistema de arquivos do próprio contêiner.
Por exemplo, o aplicativo no contêiner tem a função de fazer upload de imagens.Depois de fazer o upload, ele não deve ser salvo no contêiner, porque os dados dentro do contêiner serão excluídos à medida que o contêiner morre, portanto essas fotos devem ser salvas fora do contêiner, que são dados Volume.
Por exemplo, executamos um contêiner do MongoDB para teste e importamos muitos dados de teste.Estes dados não estão dentro do contêiner, mas no volume de dados, porque o Dockerfile do MongoDB usa o volume de dados.
Após a conclusão do teste, o contêiner do MongoDB foi excluído, mas os dados do teste ainda estavam lá e não foram excluídos.

Exclua os volumes de dados que não estão mais em uso:

$ docker volume rm $(docker volume ls -q)
或者:
$ docker volume prune

Uso do disco do Build Build

O Docker 18.09 introduziu o BuildKit, que melhora o desempenho, a segurança, o gerenciamento de armazenamento e outros recursos do processo de compilação.
Você pode usar o comando para excluir o cache de compilação:

$ docker builder prune

Limpeza com um clique

Através das instruções acima, sabemos que o contêiner, o espelho e o volume de dados fornecem o subcomando de remoção para nos ajudar a recuperar espaço.
De fato, também há o subcomando da remoção no nível do sistema de encaixe, que pode limpar o espaço inútil com um clique:

$ docker system prune

É um bom hábito executar este comando regularmente.

Publicado 63 artigos originais · elogiado 7 · visualizações 3396

Acho que você gosta

Origin blog.csdn.net/weixin_44523062/article/details/105381806
Recomendado
Clasificación