Docker prune: tutorial sobre a sintaxe e exemplos
O Docker prune é utilizado para eliminar objetos desnecessários, como contentores inativos, volumes em desuso, redes antigas ou imagens. Desta forma, é possível otimizar a utilização do disco e libertar espaço de armazenamento.
O que é o Docker prune?
Os comandos Docker prune e system prune são utilizados para limpar sistematicamente os recursos do Docker de que já não necessita e libertar espaço de armazenamento. Quando as imagens, redes, volumes e contentores do Docker permanecem sem utilização durante algum tempo, podem ocupar uma grande quantidade de espaço. O comando prune permite-lhe eliminar rapidamente esses recursos que estão sem utilização, para que mantenha o seu sistema organizado e a funcionar com eficiência.
Em ambientes de desenvolvimento onde é comum criar e testar contentores, é muito frequente acumular-se uma grande quantidade de objetos obsoletos. O Docker prune não só limpa contentores e imagens, como também redes e volumes de que já não necessita, o que facilita consideravelmente a gestão dos recursos do Docker e evita que o sistema fique desorganizado e sobrecarregado.
Para que serve o Docker prune?
O comando prune pode ser utilizado em diversas situações no ambiente do Docker. Apresentamos a seguir quatro cenários típicos em que é utilizado:
Para otimizar os processos de trabalho: os ambientes Docker são frequentemente utilizados para desenvolvimento, testes e produção. Se não forem limpos com frequência, acumulam-se recursos que sobrecarregam o espaço de armazenamento e afetam o desempenho do sistema. Ao utilizar o Docker prune para eliminar esses recursos não utilizados, o sistema é otimizado, o que é muito benéfico em ambientes baseados na nuvem, nos quais os custos aumentam à medida que é necessária mais capacidade de armazenamento e potência de processamento.
Para melhorar a segurança: os recursos do Docker obsoletos ou desnecessários podem representar riscos de segurança. O Docker prune elimina contentores, imagens, redes e volumes que não estão a ser utilizados, reduzindo assim o risco de componentes desatualizados e potencialmente inseguros ficarem expostos. Manter um ecossistema Docker organizado ajuda a minimizar a superfície de ataque e melhora a segurança de toda a infraestrutura informática.
Para melhorar o desempenho: quando o ambiente Docker está sobrecarregado, recursos como a CPU e a memória são consumidos desnecessariamente, o que afeta o desempenho do sistema. Ao realizar limpezas frequentes com o Docker prune, liberta-se espaço e melhora-se a eficiência na gestão e execução de contentores, o que se traduz em tempos de carregamento mais curtos, implementações mais rápidas de aplicações e, em geral, uma maior capacidade de resposta do sistema.
Para uma manutenção mais fácil: a execução frequente do Docker prune facilita consideravelmente a manutenção do ambiente Docker. Ao eliminar recursos não utilizados, as tarefas de gestão tornam-se menos complicadas para os programadores. Além disso, torna-se mais fácil manter o controlo sobre os componentes Docker ativos e relevantes, pelo que é possível detetar e resolver problemas mais rapidamente. Desta forma, as equipas podem concentrar-se no desenvolvimento e na melhoria das suas aplicações, em vez de terem de lidar com recursos desnecessários.
Sintaxe: como se utiliza o Docker prune?
Tem um ambiente Docker e pretende eliminar recursos para libertar espaço e simplificar a gestão? Nesse caso, basta aceder aos serviços do prune executando este comando:
docker system prunebashPor predefinição, o Docker identifica os contentores parados, as imagens não utilizadas, as redes e os volumes sem uso, e solicita confirmação para os eliminar. Digite y e prima Enter para o fazer. Caso contrário, pode usar a opção -f para ignorar a confirmação e iniciar diretamente a limpeza:
docker system prune -fbashRecomendação: antes de utilizar o Docker prune, recomendamos que verifique quais os recursos do Docker que se encontram atualmente no sistema. Utilize os seguintes comandos para obter uma lista de todos os contentores, imagens, redes e volumes:
docker ps -a
docker images
docker volume ls
docker network lsbashOpções do Docker prune
Apresentamos a seguir uma tabela com as opções disponíveis para o comando docker system prune:
| Opção | Descrição |
|---|---|
--all, -a
|
Elimina todos os recursos Docker não utilizados. |
--force, -f
|
Executa a limpeza sem confirmação do utilizador. |
--volumes
|
Elimina volumes não utilizados. |
--filter, -f
|
Permite filtrar, com base em critérios, os recursos a eliminar. |
--help
|
Fornece ajuda para utilizar o comando. |
Docker prune: tutorial sobre como utilizar o comando
No Docker, é possível utilizar vários comandos para realizar uma limpeza específica de determinados tipos de recursos. Desta forma, pode controlar exatamente quais os recursos que vai eliminar.
Docker prune --filter
É possível utilizar filtros para controlar quais os recursos a eliminar, sejam eles contentores, imagens, redes ou volumes. Esta funcionalidade é especialmente útil em ambientes de desenvolvimento, onde é comum criar e esquecer rapidamente muitos recursos temporários.
Em geral, utiliza-se esta sintaxe:
docker <command> prune --filter "filter=<value>"bashA seguir, enumeram-se alguns dos possíveis filtros:
until: serve para filtrar recursos por data de criação.<duration>pode ser um valor numérico seguido de uma unidade, comoh(horas),m(minutos) ous(segundos).
docker <command> prune --filter "until=<duration>"bashExemplo: eliminar todos os contentores em espera há mais de 24 horas.
docker container prune --filter "until=24h"bashlabel: filtra recursos com base nas suas etiquetas do Docker.
docker <command> prune --filter "label=<label>"bashExemplo: limpar todos os volumes não utilizados que tenham a etiqueta mylabel.
docker volume prune --filter "label=mylabel"bashdangling: filtra os recursos que já não estão associados a nenhum contentor.
docker <command> prune --filter "dangling=true"bashExemplo: eliminar todas as imagens que já não estão em uso (dangling).
docker image prune --filter "dangling=true"bashPara além dos filtros mencionados, existem também opções de filtros mais específicos, consoante o tipo de recurso:
beforeesincepara imagens: filtram as imagens de acordo com a data de criação, seja antes ou a partir de um momento específico.exitedpara contentores: filtra os contentores de acordo com o seu estado de saída (por exemplo,exited=0para contentores que terminaram corretamente).
Eliminar recursos do Docker
Passo 1: abra um terminal ou uma linha de comandos no seu sistema.
Passo 2: execute o comando dockerprune para limpar o sistema:
docker {resource} prunebashSubstitua {resource} pelo tipo de recursos que pretende eliminar. Os valores válidos são container, image, volume e network.
Eliminar contentores Docker
Por predefinição, o Docker não liberta automaticamente os contentores quando estes terminam o seu ciclo de vida. Por isso, é importante verificar regularmente os contentores parados e eliminá-los, se necessário, pois assim os recursos bloqueados são libertados e ficam disponíveis para os contentores em execução. A seguir, descrevemos dois métodos para o fazer:
docker rm: este comando foi concebido para eliminar manualmente um ou vários contentores Docker, pelo que é a opção mais adequada se souber quais os contentores que pretende eliminar. Deve especificar os IDs ou os nomes dos contentores que pretende eliminar, para que possa eliminar apenas determinados contentores sem afetar os restantes.
Aqui está um exemplo para eliminar os contentores com os nomes container1 e container2:
docker rm container1 container2bashdocker container prune: este comando foi concebido para eliminar de uma só vez vários contentores parados. Esta opção é ideal para libertar espaço de forma rápida e eficiente, eliminando todos os contentores parados que não tenham processos em execução.
docker container prunebashEste comando lista todos os contentores parados e solicita a sua confirmação antes de os eliminar, o que se revela especialmente útil em ambientes onde são criados muitos contentores temporários que, posteriormente, já não são necessários.
Para a gestão e manutenção diárias do seu ambiente Docker, recomendamos que utilize frequentemente o comando docker container prune para que os contentores parados sejam eliminados automaticamente. Isto irá ajudá-lo a poupar tempo e garantir que não existem recursos desnecessários que possam prejudicar o desempenho do sistema. Por outro lado, docker rm é ideal quando é necessário eliminar apenas determinados contentores, seja para testes, desenvolvimento ou outros requisitos.
Eliminar imagens do Docker
As imagens do Docker são a base dos contentores. Com o tempo, podem acumular-se muitas versões e etiquetas. Ao criar ou atualizar novas imagens, ficam frequentemente imagens antigas ou não utilizadas (as chamadas «dangling»), que ocupam espaço no seu sistema e podem afetar o desempenho, sobretudo se forem em grande quantidade.
O Docker prune permite identificar e eliminar imagens que já não são utilizadas da seguinte forma:
docker image prune [Options]bashA seguir, descrevem-se algumas das opções possíveis.
-a,--all: serve para eliminar não só as imagens pendentes, mas também as imagens não utilizadas. As imagens não utilizadas são aquelas que já não têm tags e, por isso, não podem ser referenciadas diretamente por tags.
docker image prune -abash-f,--force: por predefinição, o Docker solicita uma confirmação antes de eliminar as imagens. Através dos passos-fou--force, podes ignorar essa etapa de confirmação e proceder diretamente à eliminação.
docker image prune -fbashEliminar todas as imagens do Docker
Também podes eliminar rapidamente todas as imagens do Docker de que já não precisas. Para utilizar o Docker prune corretamente, abre primeiro o terminal ou a linha de comandos e digita o seguinte:
docker image prune -a --forcebashCertifique-se de identificar quais as imagens que serão eliminadas antes de iniciar a limpeza. A opção -a também pode eliminar imagens não utilizadas de que ainda possa precisar.
Eliminar volumes do Docker
Os volumes são persistentes e mantêm os dados para além do tempo de vida útil do contentor. Com o tempo, estes volumes podem aumentar e ocupar recursos desnecessários.
docker volume prunebashEste comando procura todos os volumes nos quais já não existem contentores ativos. Será apresentada uma lista de volumes que se sugere eliminar e será solicitada uma confirmação antes de prosseguir com a limpeza.
Por outro lado, o comando docker volume rm elimina diretamente volumes específicos do Docker, uma opção útil quando sabe exatamente qual o volume que pretende eliminar, independentemente de este estar a ser utilizado por um contentor ou não. Para eliminar um volume específico do Docker, utilize o comando docker volume rm seguido do nome ou do ID do volume:
docker volume rm volume_namebashEste comando elimina os dados de forma definitiva, pelo que deve certificar-se de que sabe o nome ou o ID exato do volume que pretende eliminar.
Eliminar redes Docker
As redes do Docker são um componente fundamental para a comunicação entre contentores, quer estes se encontrem no mesmo anfitrião ou distribuídos por vários. Estas redes permanecem ativas mesmo depois de os contentores serem parados ou eliminados. Com o tempo, podem acumular-se redes que já não são utilizadas e que ocupam recursos desnecessários. O comando docker prune network é uma forma simples de identificar e eliminar essas redes que já não estão em uso.
Este é o comando:
docker network prune [OPTIONS]bashO Docker gera uma lista de todas as redes que já não são utilizadas por contentores ativos ou que já não estão referenciadas. Em seguida, solicita uma confirmação antes de as eliminar.
Melhores práticas do Docker prune
- Automatização da limpeza: implemente scripts ou ferramentas automatizadas para eliminar regularmente imagens, contentores e volumes Docker não utilizados. Desta forma, manterá o ambiente limpo e otimizará o desempenho.
- Patches de segurança e atualizações: certifique-se de que os motores Docker, os sistemas operativos do host e todas as imagens Docker sejam verificados e atualizados regularmente para minimizar as vulnerabilidades.
- Monitorização e registo: utilize ferramentas de monitorização e registo para supervisionar o desempenho dos contentores, detetar eventos inesperados e promover a proatividade na manutenção.
- Cópias de segurança externas: estabeleça rotinas para realizar cópias de segurança externas de dados importantes dos contentores Docker, por exemplo, fazendo de vez em quando cópias de segurança de conteúdos de bases de dados ou ficheiros de configuração.
- Verificação manual antes da eliminação: verifique cuidadosamente se realmente não necessita de determinados recursos antes deos eliminar. Desta forma, haverá menos risco de perder dados que não pretendia apagar ou de ocorrerem interrupções em processos em curso.
Se acabou de começar a trabalhar com o Docker e precisa de aprender o básico, recomendamos o nosso tutorial sobre o Docker.