Tutorial di Docker prune: sintassi ed esempi pratici

Docker prune rimuove gli oggetti inutili come container arrestati, volumi inutilizzati, reti o immagini vecchie. Così ottimizzi l’utilizzo del disco rigido e liberi spazio di archiviazione.

Cos’è Docker prune?

Docker prune o system prune è utile per pulire in modo sistematico le risorse Docker che non servono più, liberando spazio. Quando container, immagini, reti e volumi di Docker restano inutilizzati a lungo, possono occupare inutilmente una considerevole quantità di spazio. Con prune puoi eliminare rapidamente le risorse, mantenendo il sistema pulito e performante.

In particolare negli ambienti di sviluppo in cui spesso vengono creati e testati nuovi container si può accumulare una grande quantità di oggetti obsoleti. Docker prune pulisce non solo i container e le immagini, ma anche le reti e i volumi che non servono più. Così è molto più semplice amministrare le risorse Docker e si riduce al minimo il rischio di avere un sistema disordinato e sovraccarico.

Per cosa si usa Docker prune?

Il comando prune è adatto per diverse situazioni di lavoro quotidiano con Docker. Di seguito riportiamo quattro scenari tipici di utilizzo.

Ottimizzazione dei processi di lavoro: gli ambienti Docker sono spesso utilizzati in modo intensivo a scopi di sviluppo, test e produzione. Senza una pulizia regolare si accumulano rapidamente risorse inutili. Questo sovraccarico provoca non solo un aumento dello spazio necessario, ma può anche incidere negativamente sulle prestazioni del sistema. Rimuovendo le risorse inutilizzate, Docker prune consente un utilizzo più efficiente delle risorse di sistema. È importante soprattutto negli ambienti basati sul cloud, dove i costi salgono con l’aumentare del fabbisogno di risorse di archiviazione e di calcolo.

Aumento della sicurezza: le risorse Docker superflue e obsolete possono comportare rischi per la sicurezza. Docker prune rimuove i container, le immagini, le reti e i volumi inutilizzati, limitando il rischio che componenti obsoleti e potenzialmente non sicuri restino senza protezione. Un ecosistema Docker pulito contribuisce a minimizzare la superficie di attacco e a migliorare le condizioni di sicurezza dell’intera infrastruttura IT.

Incremento delle prestazioni: un ambiente Docker sovraccarico può compromettere il rendimento del sistema, sollecitando inutilmente risorse come la CPU e la memoria. Una pulizia regolare con Docker prune libera spazio e aumenta l’efficienza dell’amministrazione e dell’esecuzione dei container. Ne conseguono tempi di caricamento notevolmente ridotti, una distribuzione molto più rapida delle applicazioni e, in generale, una migliore capacità di reazione del sistema.

Manutenzione più semplice: eseguendo regolarmente Docker prune semplifichi considerevolmente la manutenzione del tuo ambiente Docker. Rimuovere le risorse inutilizzate riduce la complessità delle attività di manutenzione per gli sviluppatori e le sviluppatrici. Consente inoltre di mantenere più facilmente una visione d’insieme sui componenti Docker attivi e rilevanti, accelerando la diagnosi e l’eliminazione degli errori. In questo modo, non solo si risparmia tempo per l’amministrazione: i team possono concentrarsi sullo sviluppo e sul miglioramento delle loro applicazioni anziché dover fare i conti con risorse superflue.

Sintassi: come si usa Docker prune?

Vorresti ripulire le risorse nel tuo ambiente Docker per liberare spazio di archiviazione e semplificare l’amministrazione? In questo caso ti basta eseguire il comando seguente per accedere ai servizi di prune:

docker system prune
bash

Per impostazione predefinita i container arrestati e le immagini, le reti e i volumi non più utilizzati vengono identificati, proponendone poi l’eliminazione. Docker ti chiede di confermare l’operazione. Inserisci y e premi il tasto Invio. In alternativa puoi usare direttamente anche l’opzione -f per saltare la conferma ed eseguire subito l’eliminazione:

docker system prune -f
bash

Consiglio: prima di usare Docker prune è utile controllare le risorse Docker correntemente presenti sul sistema. Esegui i comandi seguenti per ottenere una lista di tutti i container, immagini, reti e volumi:

docker ps -a
docker images
docker volume ls
docker network ls
bash

Opzioni di Docker prune

Nella tabella che segue trovi un riepilogo delle varie opzioni di docker system prune.

Opzione Descrizione
--all, -a Rimuove tutte le risorse Docker inutilizzate.
--force, -f Esegue la pulizia senza richiedere la conferma dell’utente.
--volumes Rimuove i volumi inutilizzati.
--filter, -f Consente di filtrare per criteri le risorse da eliminare.
--help Visualizza una guida per l’uso del comando.

Docker prune: tutorial sull’utilizzo pratico del comando

Docker mette a disposizione vari comandi per eseguire una pulizia mirata di determinati tipi di risorse. Puoi così controllare con precisione quali risorse eliminare.

Docker prune --filter

Puoi applicare filtri per gestire la selezione delle risorse da eliminare, ad esempio container, immagini, reti e volumi. Sono utili negli ambienti di sviluppo dove si creano e dimenticano rapidamente tante risorse temporanee.

La sintassi generale si presenta come segue:

docker <command> prune --filter "filter=<value>"
bash

Tra la varie opzioni di filtro troviamo:

  • until: filtra le risorse in base alla data di creazione. <duration> può essere un valore numerico come h (ore), m (minuti) o s (secondi).
docker <command> prune --filter "until=<duration>"
bash

Esempio: rimuovere tutti i container arrestati che sono più vecchi di 24 ore

docker container prune --filter "until=24h"
bash
  • label: filtra le risorse in base all’etichetta Docker.
docker <command> prune --filter "label=<label>"
bash

Esempio: eliminare tutti i volumi inutilizzati che contengono l’etichetta mylabel

docker volume prune --filter "label=mylabel"
bash
  • dangling: filtra le risorse che non sono più usate da un container
docker <command> prune --filter "dangling=true"
bash

Esempio: rimuovere tutte le immagini non più utilizzate (dangling)

docker image prune --filter "dangling=true"
bash

Oltre ai filtri principali indicati sopra sono disponibili anche opzioni di filtro più specifiche, a seconda del tipo di risorsa:

  • before e since per le immagini: filtra le immagini in base alla data di creazione, prima o dopo un determinato momento.
  • exited per i container: filtra i container in base al loro stato Exit (ad esempio exited=0 per i container terminati correttamente).

Rimuovere risorse Docker

Primo passaggio: apri un terminale o una riga di comando nel tuo sistema.

Secondo passaggio: esegui Docker prune per pulire il sistema:

docker {resource} prune
bash

Sostituisci {resource} con il tipo di risorse che desideri eliminare. I valori validi sono container, image, volume e network.

Rimuovere container Docker

Per impostazione predefinita Docker non libera automaticamente i container al termine del loro ciclo di vita. Per mettere a disposizione dei container in esecuzione le risorse bloccate è quindi importante controllare regolarmente i container arrestati e se necessario eliminarli. Per farlo sono previsti due metodi.

  • docker rm: il comando docker rm è pensato per eliminare manualmente uno o più container Docker. È quindi adatto se sai con precisione quali container devono essere eliminati. Dovrai indicare esplicitamente gli ID o i nomi dei container da rimuovere. Saranno eliminati dal tuo ambiente solo determinati container, senza intaccare gli altri.

Di seguito un esempio per eliminare i container denominati container1 e container2:

docker rm container1 container2
bash
  • docker container prune: il comando docker container prune permette invece di eliminare più container arrestati in una volta sola. Questo metodo è particolarmente adatto per liberare spazio in modo rapido ed efficiente, perché elimina tutti i container arrestati per cui non sono in corso processi.
docker container prune
bash

Vengono elencati tutti i container arrestati. Docker ti chiederà conferma prima di procedere all’eliminazione. È estremamente pratico negli ambienti in cui vengono creati molti container temporanei che successivamente non serviranno più.

Per l’amministrazione e la manutenzione quotidiane del tuo ambiente Docker è consigliabile usare docker container prune regolarmente per eliminare in automatico i container arrestati. In questo modo, oltre a risparmiare tempo, ti assicuri che risorse inutili non compromettano le prestazioni del sistema. docker rm, invece, serve a eliminare determinati container in modo mirato e controllato, a prescindere che si tratti di test, sviluppo o altri requisiti specifici.

Rimuovere immagini Docker

Le immagini Docker sono gli elementi costitutivi dei container. Nel corso del tempo possono avere diverse versioni e tag. Quando crei o aggiorni nuove immagini, spesso le immagini vecchie o non più utilizzate vengono mantenute. Queste immagini sospese (“dangling”) occupano spazio di archiviazione sul tuo sistema e possono comprometterne le prestazioni, in particolare se presenti in numero elevato.

Con Docker prune puoi identificare le immagini non più utilizzate e rimuoverle:

docker image prune [Options]
bash

Le opzioni possibili sono ad esempio:

  • -a, --all: questa opzione non solo rimuove le immagini dangling, ma anche quelle non più in uso. Le immagini inutilizzate sono quelle che non hanno più tag, pertanto non è più possibile fare riferimento direttamente a esse con i tag.
docker image prune -a
bash
  • -f, --force: per impostazione predefinita Docker richiede una conferma prima di eliminare effettivamente le immagini. Con -f o --force puoi saltare questo passaggio di conferma ed eseguire subito la pulizia.
docker image prune -f
bash

Rimuovere tutte le immagini Docker

Puoi anche eliminare dal tuo sistema le immagini Docker che non servono più con una sola operazione. Per usare efficacemente Docker prune, per prima cosa apri il terminale o il prompt e inserisci il comando seguente:

docker image prune -a --force
bash

Prima di procedere con la pulizia assicurati di aver compreso quali immagini devono essere eliminate. L’opzione -a può eliminare anche immagini non in uso, ma che potrebbero servire ancora.

Rimuovere volumi Docker

I volumi sono persistenti e salvano dati anche quando il relativo container non è più in esecuzione. Col passare del tempo, questi volumi possono crescere di dimensioni, occupando risorse inutilmente.

docker volume prune
bash

Questo comando cerca tutti i volumi per cui non ci sono più container attivi. Ottieni così una lista con i volumi per cui è proposta l’eliminazione. Prima dell’effettiva cancellazione è richiesta la conferma.

Invece, docker volume rm è un comando che rimuove singoli volumi Docker in modo mirato. Può essere utile se sai esattamente quale volume eliminare, a prescindere che sia usato da un container o meno. Per rimuovere un determinato volume Docker usa il comando docker volume rm seguito dal nome o dall’ID del volume:

docker volume rm volume_name
bash

Assicurati anche di conoscere il nome preciso o l’ID del volume da eliminare: questo comando cancella i dati in modo permanente e non può essere annullato.

Rimuovere reti Docker

In Docker le reti sono un componente di base attraverso cui i container comunicano fra loro, a prescindere che si trovino sullo stesso host o siano distribuiti tra più host. Le reti Docker vengono mantenute anche quando i container sono stati chiusi o rimossi. Col passare del tempo può quindi succedere che si accumulino reti che non sono più in uso, occupando risorse inutilmente. Il comando docker prune network offre un modo semplice per individuare le reti inutilizzate e rimuoverle.

Il comando ha la forma seguente:

docker network prune [OPTIONS]
bash

Docker genera una lista di tutte le reti che non sono più usate dai container attivi o che sono prive di riferimenti. Dopo aver richiesto la conferma, procede all’effettiva eliminazione delle reti.

Docker prune: le migliori prassi

  • Pulizia automatizzata: usa strumenti o script automatizzati per eliminare le immagini, i container e i volumi Docker che non servono più. Così l’ambiente resta ordinato e le prestazioni vengono ottimizzate.
  • Patch di sicurezza e aggiornamenti: controlla regolarmente se ci sono patch di sicurezza e aggiornamenti per i motori Docker, i sistemi operativi host e tutte le immagini Docker. Così ridurrai al minimo le potenziali falle di sicurezza.
  • Monitoraggio e registrazione: usa strumenti di monitoraggio e registrazione per tenere sotto controllo le prestazioni dei container, riconoscere gli eventi imprevisti e favorire la proattività nella manutenzione.
  • Backup esterno: implementa routine per eseguire backup esterni dei dati importanti dei container Docker, ad esempio salvando regolarmente i contenuti del database o i file di configurazione.
  • Controllo manuale prima dell’eliminazione: controlla attentamente di non aver più bisogno delle risorse prima di eliminarle. Così minimizzi il rischio di perdite accidentali di dati o di interruzioni dei processi in corso.
Consiglio

Se hai appena iniziato a usare Docker, ti consigliamo il nostro tutorial su Docker.

Compute Engine
La soluzione IaaS ideale per i tuoi carichi di lavoro
  • vCPU estremamente vantaggiose e potenti core dedicati
  • Massima flessibilità senza periodo contrattuale minimo
  • Servizio di assistenza tecnica 24 ore su 24, 7 giorni su 7
Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top