Podar dados Docker usando filtros
Além de remover todos os dados não utilizados, docker system prune permite que você use filtros para remover seletivamente objetos Docker. Isso oferece um controle mais granular sobre o que é podado.
Filtros podem ser aplicados a diferentes tipos de objetos. Para docker system prune, você pode filtrar com base em critérios como a idade dos objetos.
Vamos criar mais alguns objetos Docker para demonstrar a filtragem. Executaremos alguns containers e, em seguida, os interromperemos.
Execute o primeiro container:
docker run -d --name oldcontainer ubuntu sleep 10
Este container será executado por 10 segundos e, em seguida, sairá.
Execute o segundo container:
docker run -d --name newcontainer ubuntu sleep 20
Este container será executado por 20 segundos e, em seguida, sairá.
Aguarde ambos os containers saírem. Você pode verificar o status deles com docker ps -a.
docker ps -a
Você deve ver oldcontainer e newcontainer com o status "Exited".
Agora, vamos usar um filtro para remover apenas objetos que são mais antigos que um determinado tempo. Podemos usar o filtro until com uma duração. Por exemplo, para remover objetos com mais de 5 segundos, você pode usar until=5s.
Vamos tentar podar objetos com mais de 15 segundos. Isso deve remover oldcontainer, mas manter newcontainer (assumindo que você esperou tempo suficiente para oldcontainer sair, mas não newcontainer).
docker system prune -f --filter "until=15s"
Observe a saída. Ela deve indicar que oldcontainer foi removido, mas newcontainer deve permanecer.
Verifique os containers:
docker ps -a
Você deve ver newcontainer listado, mas oldcontainer deve ter sido removido.
Agora, vamos podar novamente, desta vez removendo objetos com mais de 30 segundos. Isso deve remover newcontainer também.
docker system prune -f --filter "until=30s"
Observe a saída. Ela deve indicar que newcontainer foi removido.
Verifique os containers novamente:
docker ps -a
Não deve haver nenhum container listado.
Filtros fornecem uma maneira poderosa de personalizar o processo de poda. Você pode usar diferentes chaves de filtro dependendo do tipo de objeto que você está podando (containers, imagens, volumes, redes). O filtro until é comumente usado para limpar objetos que não foram usados por uma duração específica.