Rimuovi immagini Docker, volumi e contenitori in pochi secondi
Pubblicato: 2023-03-03Docker è una tecnologia di containerizzazione del software che aiuta gli sviluppatori a creare e distribuire applicazioni su piattaforme diverse, dal desktop al cloud.
Un'istantanea, o progetto, del codice sorgente, delle dipendenze e degli strumenti necessari per creare un'applicazione all'interno di un contenitore Docker è nota come immagine. Le applicazioni Docker che richiedono dati persistenti possono fare affidamento su storage chiamati volumi che sono indipendenti dal sistema operativo sottostante.
L'organizzazione efficace di immagini, volumi e contenitori è importante quando si utilizza Docker. Le incarnazioni inutilizzate di queste risorse possono accumularsi, occupando spazio prezioso su disco e alla fine influenzando le prestazioni del sistema.
Questo articolo esplora diversi modi per mantenere l'organizzazione del sistema cancellando immagini (sia singolarmente che tutte insieme), volumi e contenitori. E utilizzeremo l'interfaccia della riga di comando (CLI) docker
per completare rapidamente queste attività.
Come rimuovere le immagini Docker
La rimozione di immagini obsolete o non necessarie da Docker è essenziale per mantenere un sistema pulito e organizzato. Diamo un'occhiata a come la CLI può indirizzare determinate immagini per la rimozione.
Innanzitutto, diamo un'occhiata alle immagini in un ambiente Docker con il comando docker image ls
:
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 60 seconds ago 7.05MB <none> <none> 85b412789704 2 days ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB
L'elenco delle immagini sopra ha rivelato immagini denominate my_image e demo , entrambe contrassegnate con latest . Una terza immagine non ha nome o tag. In questo caso, si tratta di un'immagine “pendente”: un'immagine che non è attualmente utilizzata da un contenitore. Questa immagine penzolante è il risultato di una ricostruzione di my_image (uno scenario comune). La versione precedente dell'immagine è ancora nel file system, ma non è attualmente in uso.
L'elenco mostra anche i primi 12 caratteri dell'ID di 64 caratteri di ciascuna immagine, le date di creazione e lo spazio di archiviazione utilizzato dalle immagini.
Rimuovi tutte le immagini inutilizzate
Nell'esempio di elenco sopra, abbiamo un'immagine penzolante. Tuttavia, è possibile che sia attiva un'immagine senza nome o tag. Ad esempio, potrebbe essere stato utilizzato per avviare un contenitore facendo riferimento al suo ID.
Per eliminare in modo sicuro tutte le immagini veramente penzolanti, puoi utilizzare il comando docker image prune
:
$ docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Deleted Images: deleted: sha256:85b412789704c17e9c5e7edc97b2f64c748bbdae7eaa44d3fe2cc21a87acad3d Total reclaimed space: 7.05MB
Elencheremo nuovamente le nostre immagini per vedere i risultati del nostro lavoro:
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 70 seconds ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB
Dopo il processo di potatura, l'immagine senza nome o tag è scomparsa.
Rimuovi un'immagine specifica per nome
Puoi scegliere come target un'immagine per la rimozione facendo riferimento al suo nome:
$ docker image rm <image_name>
Nota: non è possibile rimuovere facilmente le immagini ancora in uso. Devi arrestare o rimuovere i contenitori in esecuzione che utilizzano le immagini. Anche se di solito non è consigliato, puoi forzare la rimozione di un'immagine attiva usando il flag -f
:
$ docker image rm <image_name> -f
Utilizzo della scorciatoia rmi per la rimozione delle immagini
L'interfaccia a riga di comando di Docker ha un approccio abbreviato per la rimozione delle immagini nell'alias rmi
. Usarlo per rimuovere un'immagine per nome ha questo aspetto:
$ docker rmi demo Untagged: demo:latest Deleted: sha256:2cbc27836df4a7707e746e28368f1fdecfefbfb813aae06611ca6913116b80b4
Useremo rmi
per i seguenti esempi di rimozione di immagini.
Rimuovi tutte le immagini senza tag
Le immagini senza tag occupano ancora prezioso spazio su disco, il che rallenta sempre di più il sistema nel tempo.
Per eliminare tutte le immagini senza tag in Docker, utilizzare il comando docker rmi
con un filtro. Puoi fornire filtri basati su criteri specifici usando l'opzione -f
(da non confondere con il flag -f
disponibile per image rm
per forzare un'azione).
Il filtro dangling=true
viene utilizzato per identificare le immagini senza tag:
$ docker rmi $(docker images -f "dangling=true" -q)
L'opzione -q
nel comando precedente mostra gli ID immagine di tutte le immagini senza tag. Tutti questi ID vengono quindi passati come argomenti a docker rmi
per rimuoverli.
Questo filtro utilizza la parola chiave "dangling", ma come notato sopra, alcune immagini senza tag potrebbero effettivamente essere attive. Sarai avvisato se un'immagine selezionata da questo filtro non è veramente penzolante.
Rimuovi un'immagine specifica per ID
Puoi utilizzare il comando docker rmi
per rimuovere qualsiasi immagine specifica facendo riferimento al suo ID:
$ docker rmi <image_id>
Rimuovi un'immagine specifica per nome e tag
È possibile eliminare un'immagine specifica insieme al relativo nome e tag utilizzando il comando docker rmi
.
Ad esempio, se hai più immagini con lo stesso nome ma tag diversi, puoi eliminarne una in particolare utilizzando questo formato:
$ docker rmi <image_name>:<tag>
Questo metodo è utile quando si desidera eliminare una versione specifica di un'immagine invece di eliminare tutte le immagini relative a un repository.
Rimuovi tutte le immagini con l'ultimo tag
In Docker, il tag "latest" si riferisce alla versione più recente di una particolare immagine Docker. Il tag latest viene spesso utilizzato come tag predefinito per le immagini Docker. Viene assegnato automaticamente alla creazione più recente di un'immagine a meno che non venga specificato esplicitamente un altro tag.
Docker fornisce un comando per rimuovere tutte le immagini con il tag "latest":
$ docker rmi $(docker images | grep "latest" | awk '{print $3}')
Il comando precedente è diviso in 2 parti. Innanzitutto ottiene l'elenco degli ID immagine, quindi passa questo elenco come argomento al comando docker rmi
.
Rimuovi immagini da un repository remoto
Per rimuovere un'immagine da un repository remoto, come Docker Hub, devi prima accedere all'account utilizzando l'interfaccia a riga di comando di Docker.
Una volta effettuato l'accesso, è sufficiente utilizzare il comando docker rmi
per rimuovere l'immagine. Il comando docker rmi
può rimuovere immagini sia locali che remote:
docker rmi my_repo/my_image_tag
In particolare, puoi rimuovere solo le immagini che sono state inviate al repository. Analogamente, non è possibile rimuovere le immagini utilizzate dai contenitori in esecuzione.
Rimuovi più immagini da un repository remoto
Per rimuovere più immagini da un repository remoto, puoi utilizzare il comando docker rmi
seguito dagli ID o dai tag dell'immagine. Per esempio:
docker rmi my_repo/image_tag_1 my_repo/image_tag_2 my_repo/image_tag_3
Questo rimuoverà le tre immagini con i tag image_tag_1
, image_tag_2
e image_tag_3
dal repository my_repo
.
Come rimuovere i volumi Docker
I volumi Docker possono occupare molto spazio su disco, soprattutto se contengono grandi quantità di dati o più backup. Rimuovendo i volumi non più necessari, riduci il rischio di violazioni dei dati e garantisci che i dati sensibili non siano accessibili a utenti non autorizzati. La rimozione regolare dei volumi può anche mantenere aggiornato l'ambiente Docker e prevenire problemi causati da dati obsoleti.
Questi comandi distruggono permanentemente tutti i dati archiviati in un volume, quindi usali con cautela.
Rimuovi tutti i volumi inutilizzati
In Docker, la rimozione dei volumi inutilizzati è fondamentale quanto la rimozione di immagini o contenitori.
Per liberare spazio su disco, puoi utilizzare il comando docker volume prune
.
Rimuovi un volume specifico per nome
La rimozione di un volume specifico in Docker è utile per rimuovere i volumi inutilizzati. Ecco il comando per rimuovere un volume:
docker volume rm my_volume_name
Con il comando precedente, il volume my_volume_name verrà rimosso. Docker genera un errore se si tenta di rimuovere un volume utilizzato. Puoi controllare i volumi disponibili utilizzando il comando docker volume ls
.
Come rimuovere i contenitori Docker
Man mano che lavori di più con Docker, potresti accumulare molti contenitori inutilizzati che occupano le risorse del disco. Se non li elimini, possono accumularsi nel tempo e occupare preziose risorse del disco, rallentando il tuo sistema e potenzialmente mettendoti a rischio.
Rimuovi tutti i contenitori bloccati
Il comando docker container prune
può eliminare tutti i container interrotti in Docker. Qui, il comando crea un elenco di tutti i contenitori arrestati che verranno rimossi e chiede conferma prima di procedere. Questo aiuta a recuperare spazio su disco e a mantenere un ambiente Docker pulito e organizzato, consentendoti di ricontrollare che non stai perdendo nulla di importante:
$ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 4df4c47c4df4 d35bcec20bce
Si noti che solo i contenitori arrestati possono essere rimossi con questo comando. Se devi rimuovere i contenitori in esecuzione, devi prima arrestarli o utilizzare un comando diverso.
Rimuovi un contenitore specifico per ID
In Docker, puoi rimuovere un contenitore specifico in base all'ID utilizzando il docker rm command
insieme all'ID contenitore. Innanzitutto, ottieni tutto l'ID del contenitore utilizzando il docker ps command
:
$ docker ps -a -q 1ce3cdeb4035 06b79541e25c fa98f1804e3e $ docker rm 1ce3cdeb4035
Il comando precedente funziona solo se il contenitore è in uno stato arrestato. Se il contenitore è in esecuzione, è necessario rimuoverlo forzatamente utilizzando il flag -f:
$ docker rm -f 1ce3cdeb4035
Rimuovi un contenitore specifico per nome
Docker fornisce un comando docker rm
multiuso per rimuovere entrambi i contenitori in base al nome e all'ID.
Ad esempio, se disponi di un contenitore denominato web_server , puoi rimuoverlo utilizzando il seguente comando:
$ docker rm web_server
Innanzitutto, è importante fermare il contenitore. Docker fornisce il comando docker stop
per arrestare un contenitore specifico.
Rimuovi tutti i contenitori in esecuzione
Per eliminare tutti i contenitori in esecuzione, puoi utilizzare il comando docker rm
:
$ docker rm $(docker ps -q)
L'utilizzo di docker ps -q
elenca gli ID dei contenitori in esecuzione. Successivamente, gli ID vengono passati al comando docker rm
, che rimuove tutti i contenitori.
Tieni presente che questo comando rimuoverà solo i contenitori in esecuzione. Se desideri rimuovere tutti i contenitori, inclusi quelli arrestati, puoi invece utilizzare il seguente comando:
$ docker rm $(docker ps -a -q)
Riepilogo
Questo articolo spiega come rimuovere immagini, volumi e contenitori Docker. Hai imparato vari metodi per mantenere un sistema pulito e organizzato. Comprendeva i comandi per rimuovere tutte le immagini inutilizzate, senza tag o specifiche per ID o nome. Hai anche appreso i comandi per eliminare tutti i contenitori interrotti o un contenitore specifico per ID o nome.
La rimozione di immagini, volumi e contenitori Docker è un processo semplice che può aiutarti a gestire i componenti inutilizzati, recuperare prezioso spazio su disco e spesso migliorare le prestazioni del sistema.
È questa semplicità che attrae gli sviluppatori verso Docker, e non c'è modo più semplice per distribuire un'applicazione sviluppata in Docker che con la piattaforma di hosting di applicazioni di Kinsta. Puoi provarlo gratuitamente ora.