Eliminare i container Docker e risparmiare risorse preziose
I container consumano spazio di archiviazione e risorse del tuo host. Eliminando i container non più necessari, puoi liberare spazio prezioso e migliorare le prestazioni del tuo sistema.
Quando dovresti eliminare i container Docker?
I container Docker sono unità isolate ed eseguibili che contengono applicazioni e le relative dipendenze. Ci sono diverse situazioni in cui ti conviene eliminare i container Docker per garantire l’efficienza, la sicurezza e la monitorabilità del tuo ambiente Docker.
Per prima cosa dovresti cancellare i container dopo l’uso. Una volta che un container ha completato con successo il compito o processo specifico per cui è stato creato, è consigliabile rimuoverlo dall’ambiente. In questo modo eviti che i container inattivi continuino a occupare risorse e spazio inutilmente.
È altrettanto consigliabile eliminare i container non più in uso o che non vengono aggiornati da molto tempo. Questo è particolarmente importante per ridurre al minimo i rischi di sicurezza, in quanto i container più vecchi potrebbero utilizzare versioni obsolete del software e presentare quindi falle di sicurezza.
Se hai dei dubbi sulla sicurezza di un container o se sospetti che possa essere compromesso, eliminalo immediatamente. Lo stesso vale per i container che non possono essere avviati a causa di conflitti o altri problemi.
Cancellare uno o più container Docker
La rimozione di uno o più container Docker specifici è un procedimento comune per eliminare dall’host i container non più necessari o inattivi.
Primo passaggio: individuare gli ID o i nomi dei container
Per prima cosa devi risalire agli ID o ai nomi dei container che desideri eliminare. Puoi utilizzare il seguente comando per visualizzare un elenco di tutti i container arrestati e in esecuzione:
docker ps -a
bashSecondo passaggio: cancellare i container
Puoi inserire facilmente gli ID o i nomi dei container, separati da uno spazio, dopo il comando docker rm:
docker rm container_id_or_name1 container_id_or_name2
bashRimuovere un container al termine dell’esecuzione
Per rimuovere automaticamente un container Docker al termine della sua esecuzione, imposta il flag --rm
al momento dell’avvio del container con il comando docker run
. Questo flag fa sì che il container venga eliminato automaticamente non appena viene arrestato.
docker run --rm image_name
bashCancellare tutti i container Docker terminati
Puoi anche eliminare i container terminati tutti insieme, filtrandoli in base al loro stato e rimuovendoli con il comando rm
.
Primo passaggio: elencare i container arrestati
Con l’opzione -f status=exited
filtri l’elenco dei container per visualizzare solo quelli arrestati.
docker ps -a -f status=exited
bashSecondo passaggio: rimuovere i container terminati
Utilizza il risultato del passaggio precedente per ottenere gli ID dei container terminati e inoltrarli direttamente al comando docker rm
.
docker rm $(docker ps -a -f status=exited -q)
bashEliminare i container con più filtri
Puoi rimuovere i container Docker con più di un filtro utilizzando il comando docker ps
combinandolo con le opzioni dei filtri e poi inoltrare l’output al comando docker rm
.
Primo passaggio: elencare i container con i filtri
Prima di tutto, inserisci il comando docker ps
con i filtri desiderati per ottenere un elenco dei container che stai cercando. “created” ed “exited” sono due degli stati che puoi indicare. I container con lo stato created sono quelli che sono stati creati ma non ancora eseguiti.
docker ps -a -f status=exited -f status=created
bashSecondo passaggio: eliminare i container Docker
Analogamente all’esempio precedente, inoltriamo i risultati al comando docker rm
.
docker rm $(docker ps -a -f status=exited -f status=created -q)
bashRimuovere il container secondo uno schema
Un’altra opzione efficace per rimuovere selettivamente i container è quella di trovare tutti i container Docker che corrispondono a uno schema specifico e successivamente eliminarli con awk
, xargs
e docker rm
Primo passaggio: trovare tutti i container di un determinato schema
Se utilizzi il comando docker ps -a
in combinazione con grep
, ottieni tutti i container i cui nomi o tag corrispondono a uno specifico schema. Ad esempio, puoi visualizzare i container il cui nome inizia con “test”:
docker ps -a | grep "test-"
bashSecondo passaggio: rimuovere i container Docker
Il comando awk
ti permette di selezionare colonne specifiche dal risultato ottenuto. Nell’esempio successivo, viene estratta la prima colonna, che contiene gli ID del container. Infine, puoi utilizzare xargs
per inoltrare gli ID al comando docker rmi
ed eliminare i container Docker corrispondenti.
docker ps -a | grep "test-" | awk '{print $1}' | xargs docker rmi
bashArrestare ed eliminare tutti i container
Puoi arrestare ed eliminare tutti i container attivi e inattivi sul tuo sistema in un’unica operazione. Questo risulta utile se vuoi ripulire completamente l’ambiente Docker.
Primo passaggio: elencare i container
Utilizza il comando seguente per verificare l’elenco dei container presenti nel tuo sistema:
docker ps -a
bashSecondo passaggio: arrestare i container
Dopo aver identificato tutti i container e aver deciso quali arrestare, inoltra l’elenco a docker stop
. Questo comando arresterà tutti i container in esecuzione.
docker stop $(docker ps -a -q)
bashTerzo passaggio: eliminare i container Docker
Dopo aver arrestato tutti i container in esecuzione, li puoi rimuovere con il comando docker rm
:
docker rm $(docker ps -a -q)
bashA differenza dei normali container Docker, i volumi dei container Docker sono meccanismi con cui è possibile conservare e scambiare dati tra i container e l’host. Nella nostra guida trovi altri tutorial su come eliminare un volume Docker o cancellare un’immagine Docker.