Com o passar dos dias e dos testes o docker vai ficando progressivamente mais bagunçado. Uma verificação simples já demonstra que há muitas imagens instaladas, muitos containers inúteis, muitos volumes mapeados gerando risco, redes e afins. Esse artigo te ajudará a manter melhor o seu ambiente Docker apagando aquilo que não presta.
Sumário
Visão geral
Funções prune
O Docker possui diversas funções de prune (podemos traduzir para expurgo ou poda) que nos ajuda a eliminar estruturas que o sistema consegue facilmente saber onde está e como está sendo utilizado.
Funções de remoção
As funções de remoção são mais objetivas do que as funções prune. Nesse caso a estrutura definida para ser deletada será, se for possível. Mas mesmo quando não for possível talvez seja interessante se valer do parâmetro –force, que rodará o comando mesmo se, por exemplo, um container estiver em uso.
Removendo as estruturas gerais
Para remover tudo que não estiver em uso no docker ao mesmo tempo (Volumes, Containers, Imagens, Redes) utilize o seguinte comando
docker system prune
Ou também com um filtro de hora
docker system prune -a --filter "until = 24h"
Removendo imagens
Removendo uma imagem por id
docker rmi id_da_imagem
Removendo várias de uma só vez
docker rmi id_da_imagem1 id_da_imagem2
Removendo por tag name
docker rmi -f tag_name
Removendo imagens sem uso
docker image prune
Removendo todas as imagens
docker rmi $ (docker images -a -q)
Removendo containers
Para remover um container definido pode utilizar os comandos
docker rm meucontainer
docker rm 158fccd533c
Também é possível dar um prune apenas nos containers
docker container prune
Uma opção interessante pode ser definir que o container será removido automaticamente após o uso. Para tal utilize
docker run —rm nome_da_imagem
Com o seguinte comando você pode parar todos os container ao mesmo tempo
docker stop $ (docker ps -a -q)
E seguindo, pode remover todos ao mesmo tempo
docker rm $ (docker ps -a -q)
Removendo volumes
Remove um volume
docker volume rm nome_do_volume
Remove vários volumes
docker volume rm nome_do_volume1 nome_do_volume2
Remove volumes não utilizados
docker volume prune
Remove volumes com uma Label específica (ao criar volumes é possível passar o parâmetro –label para definir esse rótulo)
docker volume prune —filter "label = test"
Removendo Redes
Removendo uma rede por id ou nome
docker network rm nome_da_rede
docker network rm id_da_rede
Removendo várias redes
docker network rm nome_da_rede1 nome_da_rede2 id_da_rede3
Removendo todas as redes não utilizadas
docker network prune
docker network prune --filter "until = 24h"
Removendo objetos do docker compose
Removendo todos os containers, redes, volumes e imagens criadas via docker-compose
docker-compose down --rmi all -v --remove-orphans
Removendo tudo ao mesmo tempo (imagens, containers, redes e volumes)
# Para todos os containers docker stop $(docker ps -a -q) # Remove todos os containers docker rm $(docker ps -a -q) # Remove todas as imagens docker docker rmi $(docker images -a -q) -f # Remove todos os volumes existentes docker volume rm $(docker volume ls -q) # Remove todas as redes não utilizadas (com excessão das redes default) docker network prune # Remove todos ou outros resíduos (containers parados, redes sem associação, imagens sem container, cache de build) docker system prune --all
Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.