Introduzione
Docker facilita l’incapsulamento delle tue applicazioni e dei tuoi servizi in contenitori in modo da poterli eseguire ovunque. Tuttavia, mentre lavori con Docker, è anche facile accumulare un numero eccessivo di immagini, contenitori e volumi dati inutilizzati che appesantiscono l’output e consumano lo spazio su disco.
Docker ti fornisce tutti gli strumenti necessari per pulire il tuo sistema dalla riga di comando. Questa guida in formato cheat sheet fornisce un riferimento rapido ai comandi utili per liberare spazio su disco e mantenere il tuo sistema organizzato rimuovendo immagini Docker, contenitori e volumi non utilizzati.
Come utilizzare questa guida:
- Questa guida è in formato cheat sheet con frammenti di riga di comando autocontenuti.
- Vai direttamente alla sezione che è rilevante per il compito che stai cercando di completare.
Nota: La sintassi di sostituzione dei comandi, comando $(comando)
, utilizzata nei comandi è disponibile in molti shell popolari, come bash, zsh, e Windows Powershell.
Se desideri un modo 1-click per distribuire un’applicazione Docker su un server live, dai un’occhiata a DigitalOcean App Platform.
Pulizia di tutte le immagini inutilizzate o in sospeso, contenitori, volumi e reti
Docker offre un comando unico che pulirà eventuali risorse — immagini, contenitori, volumi e reti — che sono in sospeso (non etichettate o associate a un contenitore):
Per rimuovere inoltre eventuali contenitori fermi e tutte le immagini inutilizzate (non solo le immagini in sospeso), aggiungi il flag -a
al comando:
Rimozione delle immagini Docker
Rimuovere una o più immagini specifiche
Usa il comando docker images
con la bandiera -a
per individuare l’ID delle immagini che desideri rimuovere. Questo ti mostrerà ogni immagine, comprese le layer intermedie dell’immagine. Una volta individuata l’immagine che desideri eliminare, puoi passare il suo ID o tag a docker rmi
:
Elenco:
Rimuovi:
Nota: La bandiera -a
o --all
nel comando docker images
mostra tutte le immagini Docker, comprese quelle intermedie che non sono referenziate da alcun tag. Per impostazione predefinita, docker images
mostra solo le immagini con almeno un tag. Tuttavia, potrebbero esserci alcune immagini senza alcun tag che occupano ancora spazio su disco nel sistema. La bandiera -a
può essere utile per identificare le immagini che possono essere eliminate per risparmiare spazio su disco. Quando utilizzato con il comando docker rmi
, la bandiera -f
o --force
può anche essere utilizzata per rimuovere immagini senza tag.
Rimuovi le immagini Docker in sospeso
Le immagini Docker consistono in più livelli. Le immagini in sospeso sono livelli che non hanno alcuna relazione con nessuna immagine con tag. Non servono più a niente e occupano spazio su disco. Possono essere localizzate aggiungendo la bandiera filtro -f
con un valore di dangling=true
al comando docker images
. Quando sei sicuro di volerli eliminare, puoi usare il comando docker image prune
:
Nota: Se crei un’immagine senza etichettarla, l’immagine apparirà nell’elenco delle immagini sospese perché non ha associazione con un’immagine etichettata. Puoi evitare questa situazione fornendo un’etichetta quando crei, e puoi etichettare retroattivamente un’immagine con il comando docker tag
.
Elenco:
Rimuovere:
Rimozione delle immagini secondo uno schema
Puoi trovare tutte le immagini che corrispondono a uno schema usando una combinazione di docker images
e grep
. Una volta soddisfatto, puoi eliminarle usando awk
per passare gli ID a docker rmi
. Nota che questi strumenti non sono forniti da Docker e non sono necessariamente disponibili su tutti i sistemi:
Elenco:
Rimuovere:
Rimuovi tutte le immagini
Tutte le immagini Docker su un sistema possono essere elencate aggiungendo -a
al comando docker images
. Una volta sicuro di volerle eliminare tutte, puoi aggiungere il flag -q
per passare l’ID dell’immagine a docker rmi
:
Elenco:
Rimuovi:
Rimozione dei contenitori
Rimuovi uno o più contenitori specifici
Utilizza il comando docker ps
con il flag -a
per individuare il nome o l’ID dei contenitori che desideri rimuovere:
Elenco:
Rimuovi:
Rimuovi un contenitore all’uscita
Se sai che stai creando un contenitore che non vuoi conservare una volta finito, puoi eseguire docker run --rm
per eliminarlo automaticamente quando esce:
Esegui e Rimuovi:
Rimuovi tutti i contenitori usciti
Puoi individuare i contenitori usando docker ps -a
e filtrarli per il loro stato: created
, restarting
, running
, paused
, o exited
. Per rivedere la lista dei contenitori exited
, usa il flag -f
per filtrare in base allo stato. Quando hai verificato di voler rimuovere quei contenitori, usa -q
per passare gli ID al comando docker rm
:
Elenco:
Rimuovi:
Rimuovi i contenitori usando più di un filtro
I filtri di Docker possono essere combinati ripetendo il flag del filtro con un valore aggiuntivo. Ciò porta a una lista di contenitori che soddisfano una delle due condizioni. Ad esempio, se si desidera eliminare tutti i contenitori contrassegnati come created
(uno stato che può verificarsi quando si esegue un contenitore con un comando non valido) o exited
, è possibile utilizzare due filtri:
Elenco:
Rimuovi:
Rimuovere i contenitori in base a un modello
È possibile trovare tutti i contenitori che corrispondono a un modello utilizzando una combinazione di docker ps
e grep
. Quando sei soddisfatto di avere l’elenco che desideri eliminare, puoi utilizzare awk
e xargs
per fornire l’ID a docker rm
. Nota che questi strumenti non sono forniti da Docker e non sono necessariamente disponibili su tutti i sistemi:
Elenco:
Rimuovi:
Arresta e rimuovi tutti i contenitori
Puoi controllare i contenitori sul tuo sistema con il comando docker ps
. Aggiungendo il flag -a
verranno mostrati tutti i contenitori. Quando sei sicuro di volerli eliminare, puoi aggiungere il flag -q
per fornire gli ID ai comandi docker stop
e docker rm
:
Elenco:
Rimuovi:
Rimozione dei volumi
Rimuovi uno o più volumi specifici
Usa il comando docker volume ls
per individuare il nome o i nomi del volume che desideri eliminare. Poi puoi rimuovere uno o più volumi con il comando docker volume rm
:
Elenco:
Rimuovi:
Rimuovere volumi sospesi
Poiché lo scopo dei volumi è quello di esistere indipendentemente dai contenitori, quando un contenitore viene rimosso, un volume non viene automaticamente rimosso contemporaneamente. Quando un volume esiste e non è più collegato a nessun contenitore, viene chiamato volume sospeso. Per individuarli e confermare che desideri rimuoverli, puoi utilizzare il comando docker volume ls
con un filtro per limitare i risultati ai volumi sospesi. Quando sei soddisfatto dell’elenco, puoi rimuoverli tutti con docker volume prune
:
Elenco:
Rimuovere:
Rimuovere un contenitore e il suo volume
Se crei un volume senza nome, può essere eliminato contemporaneamente al contenitore con il flag -v
. Nota che questo funziona solo con i volumi senza nome. Quando il contenitore viene rimosso con successo, viene visualizzato il suo ID. Nota che non viene fatta alcuna menzione alla rimozione del volume. Se è senza nome, viene silenziosamente rimosso dal sistema. Se ha un nome, rimane silenziosamente presente.
Rimuovere:
Conclusione
Questa guida copre alcuni dei comandi comuni utilizzati per rimuovere immagini, container e volumi con Docker. Ci sono molte altre combinazioni e flag che possono essere utilizzati con ciascuno. Per una guida completa su ciò che è disponibile, consulta la documentazione di Docker per docker system prune
, docker rmi
, docker rm
e docker volume rm
. Se ci sono compiti comuni di pulizia che ti piacerebbe vedere nella guida, chiedi o fai suggerimenti nei commenti.
Per uno sguardo dettagliato ai diversi componenti di un container Docker, dai un’occhiata a L’Ecosistema Docker: Un’introduzione ai Componenti Comuni.
Source:
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes