2015-05-05 24 views
5

Quindi, ho un sacco di immagini senza tag sul mio host. Io usoDocker rmi impossibile rimuovere le immagini

sudo docker rmi $(sudo docker images | grep "<none>" | awk '{print($3)}') per cancellare queste immagini. In fase di esecuzione, ottengo l'errore di risposta

errore dal daemon: Conflitto, non può eliminare 31fa814ba25a perché il 70c20aa2c19f container lo sta utilizzando, utilizzare -f per forzare

Così faccio un

sudo docker rmi 70c20aa2c19f 

su cui ottengo l'errore

risposta errore da d Aemon: No tale immagine: 70c20aa2c19f

Quindi, se c'è alcuna immagine con ImageID 70c20aa2c19f, allora perché l'errore del comando iniziale di cancellazione afferma che c'è un'immagine con ImageID 70c20aa2c19f?

+1

Dice ** il contenitore 70c20aa2c19f lo sta usando ** lo sta usando. Prova a rimuovere prima il contenitore. 'docker rm 70c20aa2c19f' – Dharmit

+0

sudo docker ps non mostra alcun contenitore in esecuzione – amrx

+1

E per quanto riguarda' sudo docker ps -a'? Mostra qualche contenitore? – Dharmit

risposta

5

Come i commenti sul tuo domanda indicano, che hanno capito che è necessario utilizzare:

  • docker rmi di rimuovere le immagini
  • docker rm per rimuovere i contenitori

per un po 'più di sfondo : c'è una differenza tra:

  1. Una finestra mobile i mago,
  2. Un contenitore in esecuzione in base al largo quell'immagine e
  3. Un contenitore fermo in base al largo quell'immagine

Il fermato contenitore è mantenuto perché correre il contenitore potrebbe aver cambiato il sistema di file nel contenitore, puoi quindi commettere questo container interrotto per avere una nuova immagine. (questo è un modo per creare immagini, eseguire manualmente i comandi e impegnare il contenitore risultante).

Creazione di immagini tramite docker build e Dockerfile, fa la stessa cosa, esegue il contenitore che esegue i comandi Dockerfile e impegna le immagini risultanti, taggando solo l'ultima immagine che è stata commessa.

+0

Vedere il comando image prune docker per rimuovere le immagini non utilizzate. C'è anche un comando per rimuovere i volumi inutilizzati - prugne del volume della finestra mobile. –

+1

@DanielEagle questi comandi sono stati aggiunti in Docker 1.13 - sì vedi anche 'prugne sistema docker 'per sfoltire immagini, contenitori e volumi –

+0

Avrei dovuto dire che erano comandi più recenti ma volevo lanciare il commento là fuori per completare la tua risposta . Grazie per l'altro comando di prendersi cura di tutto ciò che funziona piuttosto bene per coloro che non vogliono digitare tanto. :) –

1

Il comando di seguito ha lavorato molto per me, basta continuare ad aggiungere le -v grep di per tutti i contenitori che si desidera conservare :

sudo docker rm -f $(sudo docker ps -a -q | grep -v <good_container_1> | grep -v <good_container_2>) 
-1

Per prima cosa è necessario eliminare i contenitori appartenenti immagine finestra mobile in. Dopo aver eliminato l'immagine del Docker. Ci ho provato, funziona bene.

+1

Questo potrebbe essere stato inviato come commento. – VVN

+0

utenti con 1 punto non possono inviare commenti –

0

Il messaggio indica che un contenitore stava usando l'immagine e il contenitore si è fermato, ma l'immagine è ancora collegata al contenitore. Per rimuovere l'immagine, è necessario prima rimuovere il contenitore per docker rm [Container-ID].Dopo questo, rimuovere l'immagine di docker rmi [Image-ID]

Problemi correlati