2014-10-16 13 views
6

l'esecuzione dei comandi docker images e docker images -a risultati nei seguenti uscite:Se le immagini nella finestra mobile non sono contrassegnate, vengono utilizzate o sono orfane?

$ docker images 
REPOSITORY   TAG  IMAGE ID   CREATED   VIRTUAL SIZE 
ubuntu    14.04  9cbaf023786c  2 days ago  192.8 MB 
$ docker images -a 
REPOSITORY   TAG  IMAGE ID   CREATED   VIRTUAL SIZE 
ubuntu    14.04  9cbaf023786c  2 days ago  192.8 MB 
<none>    <none>  03db2b23cf03  2 days ago  192.8 MB 
<none>    <none>  8f321fc43180  2 days ago  192.8 MB 
<none>    <none>  6a459d727ebb  2 days ago  192.8 MB 
<none>    <none>  2dcbbf65536c  2 days ago  192.8 MB 
<none>    <none>  97fd97495e49  2 days ago  192.6 MB 

sono le immagini con tag <none> di qualche importanza? In caso contrario: perché vengono con le immagini contrassegnate che ho tirato? Le taglie si sommano o sono solo una ripetizione? In tal caso, posso eliminarli senza alcun effetto sul mio lavoro?

risposta

8

I file di immagine sono indipendenti e combinano tramite unionfs magic per formare un contenitore in esecuzione. Le immagini che ti interessano sono spesso contrassegnate con nomi memorabili. È possibile eliminare le immagini non utilizzate, cioè quelle che non contribuiscono a nessuna immagine a cui tieni. Lo faccio in questo modo in bash:

function docker_rm_unnamed_images { 
    sudo docker rmi $(sudo docker images | grep '^<none>' | awk '{print $3}') 
} 

Si può pensare a un'immagine di finestra mobile come una pila di 'livelli'. Ogni comando Dockerfile aggiunge un ulteriore livello all'immagine. È importante rendersi conto che ognuno di questi comandi crea un file immagine separato. Così il Dockerfile

FROM foo 
RUN a 
RUN b 
RUN c 

sarebbe una pila di

image=1 (possibly pulled from the foo registry) 
image=2 (after applying a to image 1) 
image=3 (after applying b to image 2) 
image=4 (after applying c to image 3) 

E 'probabile che l'immagine foo è stato composto da più altri livelli, in modo da l'immagine finale è una pila di 4 o più immagini. Ciascuno di questi file di immagine è presente nel registro delle immagini della finestra mobile. Molti di loro sono senza nome, perché corrispondono ad un comando RUN, per esempio. Ciascuno dei file immagine 1-4 è probabilmente abbastanza piccolo (a meno che non corrisponda ad una installazione yum p1 .. p100 per esempio). Insieme formano il file system del contenitore che alla fine si esegue.

+0

grazie per questo. Ho trovato questo modo per eliminarli ieri qui: http://stackoverflow.com/questions/21398087/how-to-delete-dockers-images Le mie domande sono in realtà più orientate verso una comprensione: le immagini sono contrassegnate come "" di qualche importanza? Perché vengono con le immagini contrassegnate che ho tirato? Le taglie si sommano o sono solo una ripetizione? – Steven

+0

@Steven: aggiornata la mia risposta. – seanmcl

2

Per rimuovere tutte le immagini senza tag, è necessario le opzioni aggiuntive:

docker rmi $(sudo docker images -a | grep '^<none>' | awk '{print $3}') 

opzione '-a': mostra tutte le immagini, incluse le immagini senza tag

Problemi correlati