Come rimuovere immagini Docker, container e volumi

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 per distribuire un’applicazione Docker su un server live con un solo clic, dai un’occhiata a DigitalOcean App Platform.

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):

docker system prune

Per rimuovere inoltre eventuali contenitori fermi e tutte le immagini inutilizzate (non solo le immagini in sospeso), aggiungi il flag -a al comando:

docker system prune -a

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:

docker images -a

Rimuovi:

docker rmi Image Image

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:

docker images -f dangling=true

Rimuovere:

docker image prune

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:

docker images -a |  grep "pattern"

Rimuovere:

docker images -a | grep "pattern" | awk '{print $1":"$2}' | xargs docker rmi

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:

docker images -a

Rimuovi:

docker rmi $(docker images -a -q)

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:

docker ps -a

Rimuovi:

docker rm ID_or_Name ID_or_Name

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:

docker run --rm image_name

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:

docker ps -a -f status=exited

Rimuovi:

docker rm $(docker ps -a -f status=exited -q)

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:

docker ps -a -f status=exited -f status=created

Rimuovi:

docker rm $(docker ps -a -f status=exited -f status=created -q)

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:

docker ps -a |  grep "pattern

Rimuovi:

docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm

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:

docker ps -a

Rimuovi:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

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:

docker volume ls

Rimuovi:

docker volume rm volume_name volume_name

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:

docker volume ls -f dangling=true

Rimuovere:

docker volume prune

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:

docker rm -v container_name

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