GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Guida completa per la rimozione delle immagini Docker

Se continui a creare immagini Docker, presto inizierai a esaurire lo spazio. L'eliminazione di immagini Docker vecchie e inutilizzate libererà molto spazio su disco per te.

In questo articolo, parlerò di vari scenari di eliminazione delle immagini Docker dal tuo sistema.

Modi per rimuovere le immagini della finestra mobile

Per prima cosa, controlla le immagini della finestra mobile presenti sul tuo sistema con questo comando:

docker images

L'output mostrerà tutte le immagini della finestra mobile e il loro ID immagine. Hai bisogno di questo nome immagine (sotto la colonna del repository) o dell'ID immagine per eliminare un'immagine della finestra mobile dal tuo sistema.

[email protected]:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              67e34c1c9477        2 weeks ago         114MB
ubuntu              latest              775349758637        6 weeks ago         64.2MB

Con l'ID immagine, puoi rimuovere l'immagine della finestra mobile nel modo seguente:

docker rmi image_name_or_id

Puoi anche usare questo comando poiché entrambi sono uguali:

docker image rm image_id

Ecco come potrebbe essere l'output:

[email protected]:~$ docker rmi 67e34c1c9477
Untagged: debian:latest
Untagged: [email protected]:79f0b1682af1a6a29ff63182c8103027f4de98b22d8fb50040e9c4bb13e3de78
Deleted: sha256:67e34c1c9477023c0ce84c20ae5af961a6509f9952c2ebbf834c5ea0a286f2b8
Deleted: sha256:f2b4f0674ba3e6119088fe8a98c7921ed850c48d4d76e8caecd7f3d57721b4cb

Se utilizzi l'ID immagine, verranno rimosse tutte le immagini associate a tale ID.

Rimuovi l'immagine della finestra mobile associata a un contenitore

La vita sarebbe stata molto più semplice se tu potessi semplicemente rimuovere le immagini Docker come quella. Ma non succede spesso.

Se hai contenitori associati all'immagine della finestra mobile, riscontrerai alcuni errori quando proverai a rimuovere l'immagine.

[email protected]:~$ docker rmi 775349758637
Error response from daemon: conflict: unable to delete 775349758637 (cannot be forced) - image is being used by running container 13dc0f4226dc

Devi prima fermare il container:

[email protected]:~$ docker stop 13dc0f4226dc
13dc0f4226dc

Il problema è che anche se interrompi il contenitore, si lamenterà comunque se provi a rimuovere l'immagine:

[email protected]:~$ docker rmi 67e34c1c9477
Error response from daemon: conflict: unable to delete 67e34c1c9477 (must be forced) - image is being used by stopped container 5ced86b1fcee

Hai due opzioni qui:

  • Forza la rimozione di un'immagine Docker (il contenitore associato rimarrà nel sistema)
  • Rimuovi il contenitore associato, quindi rimuovi l'immagine della finestra mobile

Per forzare la rimozione di un'immagine della finestra mobile, puoi utilizzare l'opzione -f:

docker rmi -f image_id

Per rimuovere un contenitore e quindi rimuovere l'immagine, puoi utilizzare qualcosa del genere:

docker rm container_id
docker rmi image_id

Rimuovi l'immagine della finestra mobile associata a più contenitori

La vita sarebbe ancora un po' più semplice se un'immagine Docker fosse associata a un solo contenitore. Ma un'immagine può avere più contenitori associati e rimuovere quel tipo di immagine mobile diventa una seccatura.

Vedrai un errore come questo:

[email protected]:~$ docker rmi 775349758637
Error response from daemon: conflict: unable to delete 775349758637 (must be forced) - image is referenced in multiple repositories

Innanzitutto, devi trovare tutti i contenitori associati a un nome di immagine (non ID).

docker ps -a -q --filter ancestor=docker_image_name
  • -un'opzione mostra tutti i contenitori in esecuzione e interrotti.
  • L'opzione -q mostra solo l'ID del contenitore.

E poi devi fermarli tutti. Puoi utilizzare gli ID contenitore uno per uno, ma ciò richiederà troppo tempo. Puoi usare la magia di pipe e xargs per fermare tutti i contenitori associati a un'immagine:

docker ps -a -q --filter ancestor=ubuntu | xargs docker stop

E quindi puoi rimuovere i contenitori fermi o forzare la rimozione dell'immagine (come hai visto nella sezione precedente).

Se vuoi rimuovere tutti i contenitori associati a un'immagine, esegui questo comando:

docker ps -a -q --filter ancestor=ubuntu | xargs docker rm

E ora puoi rimuovere l'immagine della finestra mobile usando il comando mostrato in precedenza in questo tutorial.

Rimozione di più immagini della finestra mobile contemporaneamente

Puoi anche rimuovere più immagini della finestra mobile in un unico comando. È lo stesso del comando precedente. Devi solo specificare gli ID immagine oi nomi delle immagini.

docker rmi image_id_1 image_id_2 image_id_3

Ovviamente, dovrai interrompere tutti i contenitori in esecuzione associati alle immagini.

Rimuovi tutte le immagini della finestra mobile non utilizzate e penzolanti contemporaneamente

Prima che tu lo veda, lascia che ti spieghi cosa sono le immagini inutilizzate e penzolanti:

Qualsiasi immagine della finestra mobile a cui è associato qualsiasi tipo di contenitore (arrestato o in esecuzione) è un'immagine usata. Se un'immagine della finestra mobile non ha contenitori associati, diventa un'immagine della finestra mobile inutilizzata.

Un'immagine docker penzolante "significa che hai creato la nuova build dell'immagine, ma non le è stato assegnato un nuovo nome. Quindi le vecchie immagini che hai diventano l'immagine penzolante. Quelle vecchie immagini sono quelle senza tag e mostra sul suo nome quando esegui il comando "immagini docker".

Se vuoi rimuovere le immagini penzolanti, puoi utilizzare l'opzione di sfoltimento:

docker image prune

Se desideri rimuovere contemporaneamente sia le immagini inutilizzate che quelle penzolanti, puoi utilizzare la potatura con l'opzione -a:

docker image prune -a

Dovresti vedere lo spazio che libera alla fine dell'output:

[email protected]:~$ docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: ubuntu:latest
untagged: [email protected]:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
untagged: debian:latest
untagged: [email protected]:79f0b1682af1a6a29ff63182c8103027f4de98b22d8fb50040e9c4bb13e3de78
deleted: sha256:67e34c1c9477023c0ce84c20ae5af961a6509f9952c2ebbf834c5ea0a286f2b8
deleted: sha256:f2b4f0674ba3e6119088fe8a98c7921ed850c48d4d76e8caecd7f3d57721b4cb
untagged: fedora:latest
untagged: [email protected]:d4f7df6b691d61af6cee7328f82f1d8afdef63bc38f58516858ae3045083924a
deleted: sha256:f0858ad3febdf45bb2e5501cb459affffacef081f79eaa436085c3b6d9bd46ca
deleted: sha256:2ae3cee18c8ef9e0d448649747dab81c4f1ca2714a8c4550eff49574cab262c9

Total reclaimed space: 308.3MB

Puoi essere un po 'intelligente con il comando prune e rimuovere solo le vecchie immagini inutilizzate e penzolanti. Quindi, se vuoi rimuovere quelli più vecchi di 24 ore, usalo in questo modo:

docker image prune -a --filter "until=24h"

Rimuovi tutte le immagini della finestra mobile dal tuo sistema

Forse ti trovi in ​​un ambiente di test e vuoi ricominciare da capo rimuovendo tutte le immagini della finestra mobile.

Per rimuovere tutte le immagini della finestra mobile, devi prima interrompere tutti i contenitori in esecuzione.

docker ps -a -q | xargs docker rm

Ora puoi eliminare tutte le immagini in questo modo:

docker images -a -q | xargs docker rmi -f

Questo è tutto. Penso che sia abbastanza materiale di riferimento per rimuovere le immagini della finestra mobile e dovresti avere una migliore comprensione di questo argomento ora. Puoi anche dare un'occhiata al tutorial per rimuovere i contenitori docker.

Se hai domande o suggerimenti, lascia un commento qui sotto.


Docker
  1. Che cos'è un contenitore Docker:una guida introduttiva per principianti

  2. Come spostare le immagini Docker tra host

  3. Come condividere le immagini Docker con altri

  4. Guida completa per principianti alla registrazione Docker

  5. Come modificare le immagini Docker

Mantieni gestibili le tue immagini Docker con Docker Image Prune

Come utilizzare Docker Commit per modificare le immagini del contenitore

Comandi Docker per la gestione del ciclo di vita dei container (Guida definitiva)

Condivisione di immagini Docker su Docker Hub

Guida per principianti al mondo Docker

Come elencare / cercare / estrarre le immagini della finestra mobile su Linux