2016-06-30 12 views
20

sto cercandoImpossibile eliminare immagine con i bambini

docker rmi c565603bc87f 

Errore:

Error response from daemon: conflict: unable to delete c565603bc87f (cannot be forced) - image has dependent child images

Quindi non posso cancellare immagine anche con la bandiera -f. Come eliminare l'immagine allora e tutti i suoi figli?

Linux e la versione finestra mobile:

uname -a Linux goracio-pc 4.4.0-24-generiC# 43-Ubuntu SMP mer 8 giu 19:27:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

versione finestra mobile Cliente: versione: 1.11.2 versione API: 1.23 versione Go: go1.5.4 git commit: b9f10c9 Costruito: mer 1 giu 22:00:43 2016 OS/Arch: linux/amd64

Server: Versione: 1.11.2 versione API: 1.23 versione Go: go1.5.4 git commit: b9f10c9 Costruito: mer 1 giu 22:00:43 2016 OS/Arch: Linux/AMD64

+0

forse questo si poteva fare: https://gist.github.com/Siva-Charan/db7bd84ad2ca2b0779d87a75e6bb4176 –

risposta

10

Si dovrebbe cercare di rimuovere le immagini non necessarie prima di rimuovere l'immagine:

docker rmi $(sudo docker images --filter "dangling=true" -q --no-trunc) 

Dopo di che:

docker rmi c565603bc87f 
+3

ci sono le immagini penzolanti ... immagini docker -f dangling = true -> Niente – Roman

+2

Questa risposta sta rispondendo a una domanda diversa "Come rimuovere le immagini che penzolano?" La domanda dell'OP è "Come rimuovo le immagini dipendenti?" – tudor

+1

Per rimuovere le immagini che pendono, basta usare 'prune' – Deqing

2

La risposta qui è quello di trovare tutti i bambini discendenti, che ha una risposta qui:

docker how can I get the list of dependent child images?

quindi utilizzare tale per rimuovere le immagini del bambino in ordine.

Tornerò di nuovo a dare una risposta a questa risposta e fornirò una sceneggiatura più tardi.

+6

Hai già elaborato questo script? –

4

trovare la ID immagine e ID principale per tutti immagine creata dopo l'immagine in questione con il seguente:

docker inspect --format='{{.Id}} {{.Parent}}' $(docker images --filter since=<image_id> -q) 

Poi si chiama il comando:

docker rmi {sub_image_id} 

"sub_image_id" è ID di immagine dipendente

1

Ho anche avuto questo problema, ho potuto risolvere il problema con i comandi di seguito.questo può essere causa, il contenitore dell'immagine è in esecuzione o in uscita, quindi prima di rimuovere l'immagine è necessario rimuovere il contenitore

finestra mobile ps -a -f status = chiuso: questo comando mostra tutti i contenitori usciti quindi quindi copia Id contenitore e quindi esecuzione di seguito i comandi per rimuovere contenitore

finestra mobile rm #containerId: questo contenitore comando remove questo può essere problema che parlare di "immagine ha le immagini per figli a carico"

quindi provare a rimuovere le immagini con sotto comando

finestra mobile rmi # ImageId

0

Forza l'eliminazione di un elenco di immagini (exclure versione 10, per esempio)

docker images | grep version | grep -v version10 > images.txt && for img in $(awk -F" " '{print $3}' /root/images.txt) ; do docker rmi -f $img; done