Limpeza de lixo do Kubernetes-docker

1. Análise geral

Para Docker, existem objetos como imagens, contêineres, volumes de armazenamento e redes . Portanto, esses objetos correspondentes também serão produzidos e esses objetos ocuparão espaço em disco. Quando esses objetos não estão sendo usados, para não ocupar espaço adicional em disco, esses objetos precisam ser limpos, ou seja, limpar o lixo. Após o docker versão 1.13, são fornecidos comandos prune para vários objetos e também são fornecidos comandos docker system prune para limpar todos os tipos de objetos . Mas nas versões anteriores ao docker 1.13, você precisa fornecer outras maneiras de limpar o lixo.

2. Limpeza de lixo

2.1 Limpeza de lixo após docker v1.13

2.1.1 Container

Quando o contêiner for interrompido, o sistema não saberá como excluí-lo, a menos que o campo --rm seja definido quando o contêiner estiver em execução . Os contêineres parados ainda ocuparão o espaço de armazenamento do disco. Esses contêineres parados podem ser excluídos por meio da remoção do contêiner do docker .

$ docker container prune 
AVISO! Isso removerá todos os contêineres parados. 
Você tem certeza que quer continuar? [s / N] s

Ao executar este comando, ele perguntará se deseja continuar por padrão. Se o campo -f ou -force for definido ao executar o comando, todos os contêineres parados serão excluídos diretamente. Por padrão, todos os contêineres parados serão excluídos quando este comando for executado.Você também pode filtrar os contêineres a serem excluídos definindo o campo –filter. Por exemplo, o comando a seguir exclui apenas os contêineres que foram interrompidos por mais de 24 horas.

$ docker container prune --filter "até = 24h"

2.1.2 Espelho

Ao executar o comando docker images prune , você pode limpar todas as imagens que não estão mais em uso. Por padrão, este comando limpa apenas as imagens cujo status está pendente . Os espelhos cujo status é pendente são desmarcados e não são referenciados por nenhum contêiner.

$ docker image prune 

AVISO! Isso removerá todas as imagens pendentes. 
Você tem certeza que quer continuar? [s / N] s

Se desejar remover todas as imagens não utilizadas, você pode fazer isso configurando o campo -a:

$ docker image prune -a 

AVISO! Isso removerá todas as imagens sem pelo menos um contêiner associado a elas. 
Você tem certeza que quer continuar? [s / N] s

Ao executar este comando, ele perguntará se deseja continuar por padrão. Se o campo -f ou -force for definido quando o comando for executado, a operação de exclusão será realizada diretamente. Você pode filtrar as imagens a serem excluídas definindo o campo -filter. Por exemplo, o comando a seguir exclui apenas imagens que foram interrompidas por mais de 24 horas.

$ docker image prune -a --filter "até = 24h"

2.1.3 Volume de armazenamento

O volume de armazenamento pode ser usado por um ou mais contêineres e também ocupa espaço em disco. Para manter os dados, os volumes de armazenamento nunca são excluídos automaticamente.

$ docker volume prune 

AVISO! Isso removerá todos os volumes não usados ​​por pelo menos um contêiner. 
Você tem certeza que quer continuar? [s / N] s

Ao executar este comando, ele perguntará se deseja continuar por padrão. Se o campo -f ou -force for definido quando o comando for executado, a operação de exclusão será realizada diretamente. Por padrão, todos os volumes de armazenamento não utilizados serão excluídos quando este comando for executado.Você também pode filtrar os volumes de armazenamento a serem excluídos definindo o campo -filter. Por exemplo, o comando a seguir exclui apenas o volume de armazenamento cujo valor de rótulo é keep.

$ docker volume prune --filter "rótulo! = manter"

2.1.4 Rede

A rede docker não ocupa espaço em disco, mas cria regras de iptables , dispositivos de rede de ponte e tabelas de roteamento. Portanto, quando esses recursos não são mais usados, eles devem ser limpos.

$ docker network prune 

AVISO! Isso removerá todas as redes não usadas por pelo menos um contêiner. 
Você tem certeza que quer continuar? [s / N] s

Ao executar este comando, ele perguntará se deseja continuar por padrão. Se o campo -f ou -force for definido quando o comando for executado, a operação de exclusão será realizada diretamente. Por padrão, todas as redes não utilizadas serão excluídas quando este comando for executado.Você também pode filtrar as redes a serem excluídas definindo o campo -filter. Por exemplo, o comando a seguir é apenas para redes que foram usadas por mais de 24 horas.

$ docker network prune --filter "até = 24h"

2.1.5 Excluir todos os objetos

O comando docker system prune pode excluir rapidamente todos os objetos não utilizados, incluindo imagens, contêineres, redes e volumes de armazenamento. Antes do docker 17.06.0, os volumes de armazenamento serão limpos ao mesmo tempo. Após o docker 17.06.1, você precisa definir o campo –volumes para limpar os volumes de armazenamento ao mesmo tempo.

$ docker system prune 

AVISO! Isso removerá: 
        - todos os contêineres interrompidos 
        - todas as redes não usadas por pelo menos um contêiner 
        - todas as imagens pendentes 
        - todo o cache de construção 
Tem certeza de que deseja continuar? [s / N] s

Se você estiver usando uma versão do docker posterior a 17.06.1, será necessário adicionar o campo –volumes após o comando para limpar o conteúdo do volume de armazenamento.

$ docker system prune --volumes 

AVISO! Isso removerá: 
        - todos os contêineres interrompidos 
        - todas as redes não usadas por pelo menos um contêiner 
        - todos os volumes não usados ​​por pelo menos um contêiner 
        - todas as imagens pendentes 
        - todo o cache de construção 
Tem certeza de que deseja continuar? [s / N] s

2.2 Limpeza de lixo antes do docker v1.13

2.2.1 Container

Quando o contêiner for interrompido, o sistema não saberá como excluí-lo, a menos que o campo --rm seja definido quando o contêiner estiver em execução . Os contêineres parados ainda ocuparão o espaço de armazenamento do disco e esses contêineres parados podem ser excluídos por meio do docker rm . O comando a seguir pode limpar todos os contêineres parados.

$ docker rm $ (docker ps -a -q)

2.2.2 Espelho

Ao executar o comando docker rmi , todos os espelhos não usados ​​podem ser limpos.Geralmente, apenas os espelhos com status pendente são limpos . Os espelhos cujo status é pendente são desmarcados e não são referenciados por nenhum contêiner.

$ docker rmi $ (docker images -q -f "dangling = true")

2.2.3 Volume de armazenamento

O volume de armazenamento pode ser usado por um ou mais contêineres e também ocupa espaço em disco. Para manter os dados, os volumes de armazenamento nunca são excluídos automaticamente.

$ docker volume rm $ (docker volume ls -q -f dangling = true)

 

Referência

1. Endereço "docker container prune": https://docs.docker.com/engine/reference/commandline/container_prune/

2. 《Remover objetos Docker não usados》 地址 : https: //docs.docker.com/config/pruning/

3. Endereço "docker image prune": https://docs.docker.com/engine/reference/commandline/image_prune/

4. Endereço "docker volume prune": https://docs.docker.com/engine/reference/commandline/volume_prune/

5. Endereço "docker network prune": https://docs.docker.com/engine/reference/commandline/network_prune/

Acho que você gosta

Origin blog.csdn.net/youligg/article/details/111830405
Recomendado
Clasificación