Pular para o conteúdo principal

Docker Prune: Um guia completo com exemplos práticos

Remova com segurança contêineres, imagens, volumes e redes não utilizados com um único comando do shell. Mantenha seu sistema organizado e recupere espaço em disco removendo os recursos não utilizados do Docker.
Actualizado 6 de fev. de 2025  · 20 min de leitura

Se você trabalha com o Docker diariamente, sabe como ele pode consumir espaço em disco rapidamente.  

Com o tempo, seu sistema acumula imagens, contêineres, volumes e redes não utilizados. Na maioria das vezes, eles ficam ociosos, ocupando um espaço de armazenamento valioso e, possivelmente, impedindo que você trabalhe no seu projeto atual. Felizmente, o Docker oferececomandos de limpeza incorporados em que removem facilmente os recursos desnecessários.

Esses comandos de limpeza fazem parte da família docker prune e, hoje, você aprenderá tudo sobre eles. Eles se tornarão rapidamente a solução ideal para você liberar espaço em disco.  

Vamos começar com uma breve visão geral antes de mergulharmos em exemplos práticos.  

Você é novo no Docker? Confira nosso guiaide sobre como aprender a usar o Docker do zero para que os profissionais de dados se familiarizem rapidamente.

O que é o Docker Prune?  

O termo "Docker Prune" normalmente se refere a um conjunto de comandos criados para ajudar você a remover recursos do Docker não utilizados e desnecessários.  

Com o tempo, especialmente se você trabalhar em vários projetos, criará inúmeras imagens, executará contêineres e configurará volumes e redes. Todos eles se acumulam em seu sistema, ocupando uma quantidade significativa de espaço em disco. O objetivo do docker prune é limpar essa bagunça e recuperar o armazenamento.  

Dito isso, o site docker prune é mais do que você imagina.  

Não se trata apenas de um único comando que você pode executar. Bem, você poderia, mas às vezes precisa de controle granular sobre o que é removido. É aí que entra este artigo. Ele mostrará como gerenciar a poda de forma eficaz, garantindo que você exclua apenas o que pretende e como praticar em um ambiente seguro para evitar a remoção acidental de dados importantes.  

Também vale a pena observar que os comandos prune removem apenas os recursos que não estão em uso ativo. Imagens, volumes e redes referenciados por contêineres em execução não serão excluídos. Em outras palavras, a poda não interfere nas cargas de trabalho ativas.  

Na próxima seção, mostraremos a você os diferentes tipos de comandos de poda e explicaremos como eles se encaixam no seu fluxo de trabalho.  

Você quer adicionar o Docker ao seu currículo ou portfólioio? Estas 10 ideias de projetos do Docker deixarão você pronto para o trabalho.

Todos os comandos do Docker Prune com exemplos práticos  

O Docker oferece vários comandos prune que permitem que você limpe os recursos não utilizados individualmente ou de uma só vez. Nesta seção, você aprenderá sobre eles - tanto por meio dateoria do quanto de exemplos práticos.

sistema docker prune  

Esse é o comando mais abrangente para recuperar espaço em disco. Ele remove todos os contêineres, redes, imagens e cache de compilação não utilizados em uma única operação.  

Se você estiver procurando uma maneira rápida de liberar espaço em disco com um único comando, essa é a opção ideal.  

Você pode passar opções para o comando docker system prune:  

  • -a ou --all remove todas as imagens não utilizadas em vez de apenas as pendentes (imagens que não são marcadas ou referenciadas por nenhum contêiner).  
  • --filter permite que você especifique valores de filtro.  
  • -f ou --force ignora o prompt de confirmação.  
  • --volumes também remove volumes anônimos juntamente com contêineres, redes, imagens e cache de compilação.  

Por padrão, o site docker system prune solicita que você confirme, já que se trata de um processo potencialmente destrutiva potencialmente destrutiva:

Aviso de confirmação de poda do sistema Docker

Imagem 1 - prompt de confirmação de poda do sistema Docker

Para ignorar o prompt e remover todas as imagens, contêineres, redes e volumes não utilizados com um único comando, execute:  

docker system prune -a -f --volumes

Remova tudo com um único comando docker system prune

Imagem 2 - Remova tudo com um único comando docker system prune

Mas e se você precisar de um controle mais detalhado? Vamos falar sobre isso a seguir.

poda de contêineres do docker

Em termos simples, esse comando remove todos os contêineres parados.

Os contêineres interrompidos permanecem no sistema até que sejam removidos manualmente. Eles podem ocupar espaço em disco e ser difíceis de detectar, a menos que você use uma ferramenta como o Docker Desktop Painel de controle.

Assim como o docker system prune, esse comando oferece suporte a opções:

  • --filter permite que você especifique pares de valores-chave para controlar quais contêineres são removidos.
  • -f ou --force ignora o prompt de confirmação.

Aqui está uma lista de contêineres que não estão em execução:

Lista de contêineres não em execução

Imagem 3 - Lista de contêineres não em execução

Para remover o code-server (e qualquer outro contêiner parado), execute:

docker container prune -f

Isso não solicitará confirmação e, em segundos, você verá um resultado como este:

Mensagem de saída de poda de contêineres

Imagem 4 - Mensagem de saída da poda de contêineres

E, assim, não há mais contêineres parados:

Lista de contêineres que não estão em execução (2)

Imagem 5 - Lista de contêineres que não estão em execução (2)

Agora, vamos cuidar das imagens não utilizadas.

poda de imagem do docker

Semelhante ao comando anterior, o docker image prune remove as imagens não utilizadas.

Por padrão, ele remove apenas imagens pendentes - imagens que não são marcadas e não estão associadas a um contêiner. Você pode usar um sinalizador opcional para remover todas as imagens não utilizadas, não apenas as pendentes.

Aqui está uma lista das opções disponíveis

  • -a ou --all remove todas as imagens não utilizadas em vez de apenas as pendentes.
  • --filter permite que você especifique pares de valores-chave para controlar quais imagens são removidas.
  • -f ou --force ignora o prompt de confirmação.

Agora, vamos ver isso em ação!

Aqui está uma lista de imagens atualmente no sistema:

Lista de imagens do Docker

Imagem 6 - Lista de imagens do Docker

Para remover todos eles com um único comando, execute:

docker image prune -a -f

Você verá um resultado como este no terminal:

Mensagem de saída de poda de imagem

Imagem 7 - Mensagem de saída da poda de imagem

Depois disso, nenhuma imagem permanecerá no Docker Desktop:

Lista de imagens do Docker (2)

Imagem 8 - Lista de imagens do Docker (2)

Em seguida, vamos lidar com volumes não utilizados.

volume docker prune

Como o nome sugere, o comando docker volume prune remove todos os volumes locais não utilizados. Em outras palavras, ele exclui volumes que não são referenciados por nenhum contêiner.

Por padrão, o comando remove apenas os volumes anônimos - volumes sem nome criados pelo Docker quando um contêiner é iniciado. Para remover volumes nomeados explicitamente, você precisa passar uma opção adicional.

Essas são as opções que você tem disponíveis:

  • -a ou --all remove todos os volumes não utilizados em vez de apenas os anônimos.
  • --filter permite que você especifique pares de valores-chave para controlar quais volumes são removidos.
  • -f ou --force ignora o prompt de confirmação.

Em nosso sistema, temos um único volume criado pelo usuário a partir de um arquivo docker-compose.yml:

Lista de volumes do Docker

Imagem 9 - Lista de volumes do Docker

O comando a seguir remove todos os volumes locais:

docker volume prune -a -f

Depois de executá-lo, você verá um resultado semelhante a este:

Mensagem de saída de poda de volume

Imagem 10 - Mensagem de saída da poda de volume

Agora, nenhum volume permanece:

Lista de volumes do Docker (2)

Imagem 11 - Lista de volumes do Docker (2)

Por fim, vamos ver como excluir redes não utilizadas.

poda de rede do docker

Quando os contêineres do Docker se comunicam entre si, eles geralmente usam redes definidas pelo usuário. No entanto, suas redes geralmente permanecem em seu sistema depois que esses contêineres são removidos.

O comando docker network prune remove as redes que não estão mais em uso por nenhum contêiner.

Como os outros comandos de poda, ele inclui algumas opções:

  • --filter permite que você especifique pares de valores-chave para controlar quais redes são removidas.
  • -f ou --force ignora o prompt de confirmação.

Diferentemente de imagens, contêineres ou volumes, você não pode inspecionar visualmente as redes por meio do Docker Desktop, portanto, precisará trabalhar com a linha de comando. Aqui está uma lista das redes disponíveis:

Lista de redes do Docker

Imagem 12 - Lista de redes do Docker

Para remover todas as redes não associadas à instalação padrão do Docker, execute:

docker network prune -a -f

Depois de executar o comando, você verá um resultado como este:

Mensagem de saída de poda de rede

Imagem 13 - Mensagem de saída de poda de rede

Todas as redes associadas a contêineres executados anteriormente desapareceram:

Lista de redes do Docker

Figura 14 - Lista de redes do Docker

No entanto, observe que as três redes restantes são essenciais para que o Docker funcione corretamente e não podem ser removidas.

E isso é tudo sobre o uso básico dos comandos do docker prune! A seguir, abordaremos tópicos avançados, como o uso seguro desses comandos e as práticas recomendadas para ambientes sensíveis e de produção.

Usando o Docker Prune com segurança  

Os comandos docker prune ajudam a recuperar rapidamente o espaço em disco, mas você deve usá-los com cuidado. usados com cautelaespecialmente em ambientes de produção.

A exclusão acidental de contêineres, imagens ou volumes importantes pode resultar em perda de dados e interromper fluxos de trabalho essenciais. Para evitar isso, é melhor você entender o que será removido antes de executar qualquer comando prune.  

Esta seção explica as principais precauções que você deve tomar ao executar o docker prune com segurança.  

Entender o que será removido  

Os comandos prune foram projetados para remover apenas os recursos que não estão sendo usados ativamente.  

Por exemplo, docker image prune exclui apenas imagens pendentes e docker volume prune remove apenas volumes não anexados a nenhum contêiner. No entanto, ao adicionar opções como -a -f, você removerá todas as imagens ou volumes sem solicitar confirmação.

Além disso, em ambientes complexos, as dependências podem ser facilmente ignoradas, portanto, verificar novamente antes de podar é sempre uma boa prática.  

Antes de executar qualquer comando prune, você deve inspecionar o sistema para ver quais recursos estão em uso no momento. Há várias maneiras de fazer isso, e exploraremos as mais comuns nesta seção.  

Use este comando para visualizar todos os contêineres, inclusive os parados:  

docker ps -a

Você deverá ver um resultado semelhante a este:

Lista de todos os contêineres do Docker

Imagem 15 - Lista de todos os contêineres do Docker

Da mesma forma, use este comando para listar todas as imagens, inclusive as não utilizadas:  

docker images

O resultado será estruturado de forma semelhante ao anterior:  

Lista de todas as imagens do Docker

Imagem 16 - Lista de todas as imagens do Docker

Para verificar os volumes, execute este comando para listar todos os volumes:  

docker volume ls

Lista de todos os volumes do Docker

Imagem 17 - Lista de todos os volumes do Docker

Analise esses resultados cuidadosamente para garantir que nenhum recurso crítico seja excluído por engano.  

Teste de segurança  

Infelizmente, o Docker ainda não tem uma opção integrada para uma execução seca de comandos de poda, embora isso tenha sido solicitado anos atrás.  

Por esse motivo, você deve inspecionar manualmente os recursos usando os comandos listados na seção anterior antes de executar um comando prune.

Se estiver trabalhando em um ambiente sensível em que a persistência dos dados é essencial, você deve sempre criar um backup antes de executar comandos de poda que afetem os volumes.

É claro que essas são apenas medidas de precaução, mas esperamos que você veja uma opção de funcionamento em seco implementada em breve.

Práticas recomendadas para o Docker Prune  

Para manter seu ambiente do Docker livre de desordem desnecessária, é importante que você execute os comandos do prune regularmente, talvez até mesmo automatizando-os.  

Esta seção orienta você sobre as práticas recomendadas para executar os comandos do docker prune em ambientes de produção.  

Use o docker prune regularmente  

Com o passar do tempo, o Docker acumula imagens não utilizadas, contêineres parados e volumes desnecessários - tudo isso consome muito espaço em disco.  

A execução regular de comandos de poda mantém seu ambiente limpo e evita o uso excessivo do disco. Você deve incluí-los como parte docronograma de manutenção do site .

A cada poucas semanas é um bom ponto de partida, mas se a sua configuração envolver a criação e a remoção frequentes de contêineres, considere uma programação mais frequente.  

Seja cauteloso na produção  

Qualquer trabalho em um ambiente de produção exige cuidado extra, e a poda do Docker não é exceção.  

Um momento de desatenção pode levar ao tempo de inatividade ou à perda de dados, e você não quer ser responsável por isso. Antes de executar os comandos docker prune em um ambiente de produção, sempre inspecione os recursos do sistema usando docker ps -a, docker images e docker volume ls, conforme explicado na seção anterior.  

Além disso, é uma boa ideia usar comandos de poda específicos em vez do abrangente docker system prune, pois pode ser mais fácil se recuperar de exclusões não intencionais.  

Automatizar a poda da janela de encaixe  

Outra boa prática é simplificar os esforços de limpeza automatizando os comandos do docker prune usando tarefas agendadas.  

No Linux, você pode configurar um trabalho cron para executar os comandos em intervalos regulares, enquanto no Windows, você pode usar o Agendador de Tarefas para automação semelhante. Isso ajuda a manter um sistema organizado sem a necessidade de intervenção manual. No entanto, em um ambiente de produção, certifique-se de que a poda automatizada não interfira nas cargas de trabalho críticas.  

Por exemplo, este trabalho cron no Linux executa um comando de poda completo todos os domingos à meia-noite:

0 0 * * 0 docker system prune -a -f

Solução de problemas com o Docker Prune  

Os comandos docker prune são uma solução para recuperar espaço em disco, mas nem sempre são suficientes para garantir espaço suficiente para extrair novas imagens ou executar novos contêineres.  

Além disso, você pode remover acidentalmente recursos importantes, por isso é fundamental discutir estratégias de recuperação.  

Ambos os tópicos serão abordados nesta seção.  

Problemas de espaço em disco  

As imagens do Docker podem ser grandes - recentemente tivemos uma com mais de 13 GB - e temos certeza de que há imagens ainda maiores por aí. Portanto, mesmo depois de executar docker prune, você pode descobrir que o sistema ainda está com pouco espaço em disco.  

Para ver exatamente quanto espaço está sendo usado por imagens, contêineres e volumes, execute este comando:

docker system df

Espaço usado pelo Docker

Imagem 18 - Espaço usado pelo Docker

Ao recuperar espaço em disco com os comandos docker prune, adicione o sinalizador -a para remover todas as imagens, volumes ou contêineres - não apenas os pendentes ou anônimos. É claro que você deve ter em mente as possíveis desvantagens dessa abordagem.  

Se o problema de espaço em disco persistir, sua única opção é aumentar o espaço em disco disponível.  

Recuperação de remoções acidentais

É mais fácil falar do que fazer a recuperação, por isso recomendamos que você entenda o que será removido pela poda antes de executar o comando.  

Ainda assim, se você se encontrar em uma situação em que tenha acidentalmente podado contêineres, imagens ou volumes importantes, comece verificando os registros para identificar o que foi removido.

No macOS, isso pode ser feito executando os dois comandos a seguir(opções para Windows e Linux):  

pred='process matches ".*(ocker|vpnkit).*" || (process in {"taskgated-helper", "launchservicesd", "kernel"} && eventMessage contains[c] "docker")'
/usr/bin/log stream --style syslog --level=debug --color=always --predicate "$pred"

/usr/bin/log show --debug --info --style syslog --last 30m --predicate "$pred" >/tmp/logs.txt

Ao executar esses comandos, você salvará os últimos 30 minutos de registros relacionados ao Docker em /tmp/logs.txt. Você deve inspecionar esses logs para determinar quais contêineres ou imagens foram excluídos.  

Para imagens excluídas, você provavelmente pode obtê-las novamente de um registro como o Docker Hub. Um comando como este deve resolver o problema:  

docker pull <image_name>

E para contêineres excluídosvocê sempre poderá recriá-los se eles forem baseados em imagens persistentes:

docker run --name <container_name> <image_name>

Como alternativa, você pode restaurar a partir de backups se eles estiverem disponíveis, o que pode ser usado para recuperar dados de volumes e contêineres. No futuro, considere o uso de ferramentas para instantâneos de volume para evitar a perda de dados.  

No entanto, a melhor estratégia é inspecionar os recursos que serão excluídos antes de executar um comando de poda e só prosseguir se você tiver certeza absoluta de que isso não afetará o seu fluxo de trabalho.  

Resumindo o Docker Prune  

Para concluir, a família de comandos docker prune é uma maneira eficiente de recuperar espaço em disco, mas há o risco de excluir acidentalmente os recursos de que você precisa, levando à perda de dados. Esse risco é ainda maior quando você usa os sinalizadores opcionais -a -f, que removerão tudo com força.  

No entanto, a poda continua sendo um método de primeira linha para manter seu sistema limpo e organizado.  

Você só precisa ser cauteloso, especialmente em ambientes de produção. Use comandos como docker ps -a, docker images e docker volume ls antes de fazer a poda para listar todos os contêineres, imagens e volumes. Execute o comando de poda somente depois que você tiver certeza de que não há problema em excluir os recursos listados (supondo que eles não estejam sendo usados por um contêiner em execução).

Se você quiser saber mais sobre o Docker, a conteinerização e a orquestração de contêineres, confira estes cursos no DataCamp:

Perguntas frequentes

O docker prune é seguro?

Em geral, sim, mas deve ser usado com cautela. Ele remove apenas os recursos que não estão em uso, mas executá-lo sem verificação pode levar a exclusões acidentais, especialmente em ambientes de produção. Sinalizadores adicionais, como -a -f, removerão à força todos os recursos não utilizados. 

Qual é a diferença entre o docker prune e o docker rm?

docker prune remove todos os recursos não utilizados de um tipo específico, enquanto docker rm é usado para excluir manualmente contêineres ou imagens específicos.

O docker system prune remove tudo?

Não, o docker system prune remove contêineres, redes, imagens e cache de compilação não utilizados, mas não exclui volumes nomeados, a menos que o sinalizador --volumes seja especificado após o comando. 

O que é uma imagem pendente no Docker?

Uma imagem pendente é uma imagem que não está marcada ou referenciada por nenhum contêiner. Geralmente, são imagens intermediárias remanescentes de compilações e podem ser removidas com segurança com o comando docker image prune


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Cientista de dados sênior baseado na Croácia. Principal redator técnico com mais de 700 artigos publicados, gerando mais de 10 milhões de visualizações. Autor do livro Automação do aprendizado de máquina com TPOT.
Temas

Saiba mais sobre o Docker com estes cursos!

Curso

Introduction to Docker

4 hr
24.5K
Gain an introduction to Docker and discover its importance in the data professional’s toolkit. Learn about Docker containers, images, and more.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

O guia completo da certificação Docker (DCA) para 2024

Libere seu potencial no Docker e na ciência de dados com nosso guia abrangente. Explore as certificações do Docker, os caminhos de aprendizado e as dicas práticas.
Matt Crabtree's photo

Matt Crabtree

8 min

blog

AWS Certified Cloud Practitioner: um guia completo

Saiba mais sobre a certificação e o exame AWS Certified Cloud Practitioner com nosso guia completo. Descubra dicas, recursos e estratégias para garantir que você tenha sucesso.
Srujana Maddula's photo

Srujana Maddula

27 min

blog

O que é o Data Wrangling? Um guia prático com exemplos

Aprenda os conceitos e as teorias fundamentais por trás da organização de dados, além de alguns exemplos práticos. Use essas habilidades em seu trabalho diário de ciência de dados para gerar dados limpos e úteis para seus modelos.
Tim Lu's photo

Tim Lu

12 min

Tutorial

Git Prune: O que é o Git Pruning e como usar o Git Prune

O Git prune é um comando do Git que remove objetos do repositório que não são mais acessíveis a partir de qualquer commit ou branch, ajudando a liberar espaço em disco.

Tutorial

Como instalar e configurar o MySQL no Docker

Saiba como instalar e configurar o banco de dados MySQL dentro de contêineres do Docker. O tutorial inclui conceitos como conexão com servidores MySQL, execução de clientes MySQL para conexão com contêineres e assim por diante.
Bex Tuychiev's photo

Bex Tuychiev

12 min

Tutorial

Como escrever um script Bash: um tutorial simples de scripts Bash

Descubra os fundamentos da criação de scripts Bash e aprenda a escrever um script Bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

Ver maisVer mais