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
- Removendo as estruturas gerais
- Removendo imagens
- Removendo containers
- Removendo volumes
- Removendo Redes
- Removendo objetos do docker compose
- Removendo tudo ao mesmo tempo (imagens, containers, redes e volumes)
- O Desenvolvedor acabou! Será?
- Engenharia de Confiabilidade
- Gossip Protocol e a manutenção do estado em sistemas distribuídos
- Instalando o Docker no WSL2
- Arquitetura Lambda e Arquitetura Kappa
- Os 14 tipos de bancos de dados
- CORS: Seus problemas acabaram
- Porque você já deveria estar usando Hashicorp Consul?
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 pruneOu 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_imagemRemovendo várias de uma só vez
docker rmi id_da_imagem1 id_da_imagem2Removendo por tag name
docker rmi -f tag_nameRemovendo imagens sem uso
docker image pruneRemovendo 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 158fccd533cTambém é possível dar um prune apenas nos containers
docker container pruneUma opção interessante pode ser definir que o container será removido automaticamente após o uso. Para tal utilize
docker run —rm nome_da_imagemCom 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_volumeRemove vários volumes
docker volume rm nome_do_volume1 nome_do_volume2Remove volumes não utilizados
docker volume pruneRemove 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_redeRemovendo 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-orphansRemovendo 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.
