Introdução
O Docker facilita o envolvimento de suas aplicações e serviços em containers para que você possa executá-los em qualquer lugar. No entanto, ao trabalhar com o Docker, também é fácil acumular um número excessivo de imagens, containers e volumes de dados não utilizados que poluem a saída e consomem espaço em disco.
O Docker fornece todas as ferramentas necessárias para limpar o seu sistema a partir da linha de comando. Este guia em formato de folha de dicas fornece uma referência rápida para comandos úteis para liberar espaço em disco e manter seu sistema organizado removendo imagens, containers e volumes Docker não utilizados.
Como Usar Este Guia:
- Este guia está no formato de folha de dicas com trechos de linha de comando autocontidos.
- Salte para qualquer seção que seja relevante para a tarefa que você está tentando completar.
Observação: A sintaxe de substituição de comando, comando $(comando)
, usada nos comandos está disponível em muitos shells populares, como bash, zsh e Windows Powershell.
Se você deseja uma maneira de um clique para implantar um aplicativo Docker em um servidor ao vivo, dê uma olhada no Plataforma de Aplicativos DigitalOcean.
Limpar Todas as Imagens Inutilizadas ou Penduradas, Contêineres, Volumes e Redes
O Docker fornece um único comando que limpará quaisquer recursos – imagens, contêineres, volumes e redes – que estão pendurados (não marcados ou associados a um contêiner):
Para remover adicionalmente quaisquer contêineres parados e todas as imagens inutilizadas (não apenas imagens pendentes), adicione a bandeira -a
ao comando:
Removendo Imagens Docker
Remover uma ou mais imagens específicas
Use o comando docker images
com a bandeira -a
para localizar o ID das imagens que deseja remover. Isso mostrará todas as imagens, incluindo camadas de imagem intermediárias. Depois de localizar as imagens que deseja excluir, você pode passar seu ID ou tag para docker rmi
:
Listar:
Remover:
Nota: A bandeira -a
ou --all
no comando docker images
exibe todas as imagens do Docker, incluindo as intermediárias que não são referenciadas por nenhum rótulo. Por padrão, docker images
mostra apenas as imagens com pelo menos um rótulo. No entanto, podem existir algumas imagens sem nenhum rótulo que ainda estejam ocupando espaço em disco no sistema. A bandeira -a
pode ser útil na identificação de imagens que podem ser limpas para economizar espaço em disco. Ao ser usado com o comando docker rmi
, a bandeira -f
ou --force
também pode ser usada para remover imagens sem rótulos.
Remover Imagens Docker Danglings
As imagens do Docker consistem em várias camadas. As imagens danglings são camadas que não têm relação com nenhuma imagem rotulada. Eles não servem mais um propósito e consomem espaço em disco. Eles podem ser localizados adicionando a bandeira de filtro -f
com um valor de dangling=true
ao comando docker images
. Quando você tem certeza de que deseja excluí-los, pode usar o comando docker image prune
:
Nota: Se construir uma imagem sem marcá-la, a imagem aparecerá na lista de imagens penduradas porque não tem associação com uma imagem marcada. Você pode evitar esta situação fornecendo uma marcação ao construir e pode marcar retroativamente uma imagem com o comando docker tag
.
Lista:
Remover:
Removendo imagens de acordo com um padrão
Você pode encontrar todas as imagens que correspondem a um padrão usando uma combinação de docker images
e grep
. Uma vez satisfeito, você pode excluí-las usando awk
para passar os IDs para docker rmi
. Note que essas utilidades não são fornecidas pelo Docker e não estão necessariamente disponíveis em todos os sistemas:
Lista:
Remover:
Remova todas as imagens
Todas as imagens Docker em um sistema podem ser listadas adicionando -a
ao comando docker images
. Uma vez que você tenha certeza de que deseja excluí-las todas, você pode adicionar a flag -q
para passar o ID da imagem para docker rmi
:
Listar:
Remover:
Removendo Containers
Remova um ou mais containers específicos
Use o comando docker ps
com a flag -a
para localizar o nome ou ID dos containers que deseja remover:
Listar:
Remover:
Remover um container ao sair
Se você souber que não deseja manter um contêiner depois de concluído, você pode executar docker run --rm
para excluí-lo automaticamente quando ele sair:
Executar e Remover:
Remover todos os contêineres encerrados
Você pode localizar os contêineres usando docker ps -a
e filtrá-los pelo seu status: created
, restarting
, running
, paused
ou exited
. Para revisar a lista de contêineres exited
, use a bandeira -f
para filtrar com base no status. Quando você tiver verificado que deseja remover esses contêineres, use -q
para passar os IDs para o comando docker rm
:
Lista:
Remover:
Remover contêineres usando mais de um filtro
Os filtros do Docker podem ser combinados repetindo a sinalização do filtro com um valor adicional. Isso resulta em uma lista de contêineres que atendem a qualquer condição. Por exemplo, se você deseja excluir todos os contêineres marcados como criado
(um estado que pode ocorrer quando você executa um contêiner com um comando inválido) ou saído
, você pode usar dois filtros:
Listar:
Remover:
Remover contêineres de acordo com um padrão
Você pode encontrar todos os contêineres que correspondem a um padrão usando uma combinação de docker ps
e grep
. Quando estiver satisfeito de ter a lista que deseja excluir, você pode usar awk
e xargs
para fornecer o ID para docker rm
. Observe que esses utilitários não são fornecidos pelo Docker e não estão necessariamente disponíveis em todos os sistemas:
Listar:
Remover:
Parar e remover todos os containers
Você pode revisar os containers no seu sistema com docker ps
. Adicionando a bandeira -a
mostrará todos os containers. Quando tiver certeza de que deseja excluí-los, você pode adicionar a bandeira -q
para fornecer os IDs aos comandos docker stop
e docker rm
:
Listar:
Remover:
Removendo Volumes
Remover um ou mais volumes específicos
Use o comando docker volume ls
para localizar o nome ou nomes do volume que deseja excluir. Então, você pode remover um ou mais volumes com o comando docker volume rm
:
Listar:
Remover:
Remover volumes pendentes
Uma vez que o objetivo dos volumes é existir independentemente dos contentores, quando um contentor é removido, um volume não é automaticamente removido ao mesmo tempo. Quando um volume existe e não está mais conectado a nenhum contentor, é chamado de volume pendente. Para localizá-los e confirmar que deseja removê-los, você pode usar o comando docker volume ls
com um filtro para limitar os resultados aos volumes pendentes. Quando estiver satisfeito com a lista, você pode removê-los todos com docker volume prune
:
Lista:
Remover:
Remover um contentor e seu volume
Se você criar um volume sem nome, ele pode ser excluído ao mesmo tempo que o contentor com a bandeira -v
. Note que isso só funciona com volumes sem nome. Quando o contentor for removido com sucesso, seu ID será exibido. Note que nenhuma referência é feita à remoção do volume. Se ele não tiver nome, será silenciosamente removido do sistema. Se ele tiver nome, permanecerá silenciosamente presente.
Remover:
Conclusão
Este guia abrange alguns dos comandos comuns usados para remover imagens, containers e volumes com o Docker. Existem muitas outras combinações e flags que podem ser usadas com cada um. Para um guia abrangente sobre o que está disponível, consulte a documentação do Docker para docker system prune
, docker rmi
, docker rm
e docker volume rm
. Se houver tarefas comuns de limpeza que você gostaria de ver no guia, por favor, pergunte ou faça sugestões nos comentários.
Para uma análise detalhada dos diferentes componentes de um container Docker, confira O Ecossistema Docker: Uma Introdução aos Componentes Comuns.
Source:
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes