Introdução
O Docker facilita o empacotamento de seus aplicativos e serviços em contêineres para que você possa executá-los em qualquer lugar. No entanto, à medida que você trabalha com o Docker, também é fácil acumular um número excessivo de imagens, contêineres 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 seu sistema a partir da linha de comando. Este guia no estilo de uma folha de truques fornece uma referência rápida para os comandos que são úteis para liberar espaço em disco e manter seu sistema organizado removendo imagens, contêineres e volumes Docker não utilizados.
Como Usar Este Guia:
- Este guia está no formato de uma folha de truques com trechos de linha de comando autocontidos.
- Pule 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 em 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 estejam 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 penduradas), adicione a bandeira -a
ao comando:
Removendo Imagens Docker
Remover uma ou mais imagens específicas
Use the 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
:
Lista:
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 para identificar imagens que podem ser pruned para economizar espaço em disco. Ao usar 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ê tiver certeza de que deseja excluí-los, poderá usar o comando docker image prune
:
Nota: Se você construir uma imagem sem marcá-la, a imagem aparecerá na lista de imagens penduradas porque não está associada a uma imagem marcada. Você pode evitar essa situação fornecendo uma marcação ao construir, e pode marcar uma imagem retroativamente 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 o awk
para passar os IDs para o docker rmi
. Note que esses utilitários não são fornecidos 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 sinalização -q
para passar o ID da imagem para o comando docker rmi
:
Listar:
Remover:
Removendo Containers
Remova um ou mais containers específicos
Use o comando docker ps
com a sinalização -a
para localizar o nome ou ID dos containers que você deseja remover:
Listar:
Remover:
Remover um container ao sair
Se você souber que ao criar um contêiner você não o manterá após sua utilização, você pode executar docker run --rm
para deletá-lo automaticamente quando sair:
Executar e Remover:
Remover todos os contêineres finalizados
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 sinalização -f
para filtrar com base no status. Quando você verificar que deseja remover esses contêineres, use -q
para passar os IDs para o comando docker rm
:
Listar:
Remover:
Remover contêineres usando mais de um filtro
Os filtros do Docker podem ser combinados repetindo a bandeira do filtro com um valor adicional. Isso resulta em uma lista de contêineres que atendem a qualquer uma das condições. Por exemplo, se você deseja excluir todos os contêineres marcados como created
(um estado que pode ocorrer quando você executa um contêiner com um comando inválido) ou exited
, você pode usar dois filtros:
Lista:
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 com 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:
Lista:
Remover:
Pare e remova todos os containers
Você pode revisar os containers no seu sistema com o comando docker ps
. Adicionar a flag -a
mostrará todos os containers. Quando estiver certo de que deseja excluí-los, você pode adicionar a flag -q
para fornecer os IDs para os comandos docker stop
e docker rm
:
Listar:
Remover:
Removendo Volumes
Remova um ou mais volumes específicos
Use o comando docker volume ls
para localizar o nome ou nomes do volume que deseja excluir. Em seguida, você pode remover um ou mais volumes com o comando docker volume rm
:
Listar:
Remover:
Remova volumes pendentes
Uma vez que o objetivo dos volumes é existir independentemente dos containers, quando um container é removido, um volume não é automaticamente removido ao mesmo tempo. Quando um volume existe e não está mais conectado a nenhum container, ele é chamado de volume pendente. Para localizá-los e confirmar que você 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 container e seu volume
Se você criar um volume sem nome, ele pode ser excluído ao mesmo tempo que o container com a flag -v
. Note que isso só funciona com volumes sem nome. Quando o container 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 visão 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