Come rimuovere un tag immagine in Docker senza rimuovere l'immagine stessa?


135

Diciamo che voglio taggare un'immagine Docker e fare un refuso. Come rimuovo il tag senza rimuovere l'immagine stessa? Né le manpage né la documentazione Docker menzionano la rimozione dei tag.

docker tag 0e5574283393 my-imaj
docker tag 0e5574283393 my-image
# docker untag my-imaj # There is no "docker untag"!

4
Per coloro che vogliono deselezionare <none>immagini come foo/bar:<none>: come usare docker images --digestse docker rmi foo/bar@<digest>come descritto su success.docker.com/KBase/…
Janaka Bandara,

Risposte:


195

Se la tua immagine è taggata con più di un tag, docker rmirimuoverà il tag, ma non l'immagine.

Quindi nel tuo esempio ...

# docker rmi my-imaj

... rimuoverà quel tag e lascerà l'immagine presente con l'altro tag corretto.


4
Grazie. Vorrei che lo menzionassero nella documentazione: - /
Mihai,

2
Se il tag che sto rimuovendo è l'ultimo, l'immagine verrà rimossa. Quindi mi chiedo qual è la risposta alla domanda nell'argomento? Come rimuovo il tag e mantengo l'immagine nella cache?
kub1x,

4
E la risposta è come sempre usare--help , non essere pigro da leggere. docker image remove --no-prune.. nel caso qualcuno fosse interessato.
kub1x,

4
Questo è falso, ha semplicemente rimosso la mia immagine. Fortunatamente, sapendo che docker ero già sospettoso, ho già creato un backup docker save.
user259412

2
@peterh afferma chiaramente la risposta If your image is tagged with more than one tag..., tuttavia dovrebbe essere aggiornato con il comando dai commenti che spiega come rimuovere l'ultimo tag senza rimuovere l'immagine.
BrainSlugs83,


17

A partire da un repository docker vuoto, importare un'immagine digitando:

#docker run hello-world

Esegui il docker imagescomando per elencare le immagini. Il risultato dovrebbe apparire così:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB

Ora creiamo un tag immagine chiamato v1 eseguendo il docker tagcomando:

#docker tag hello-world:latest hello-world:v1

Se eseguiamo il docker imagescomando vedremo il nostro nuovo tag in questo modo:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB
hello-world         v1          7bc42cc48a84      4 weeks ago       316MB

Per eliminare un tag specifico (per rispondere alla domanda originale), eseguire la finestra mobile rmi hello-world:v1dove v1 è il nome del tag. L'output sarà simile al seguente:

#docker rmi hello-world:v1
Untagged: hello-world:v1

Esegui il docker imagescomando per elencare le immagini. Si noti che il tag immagine è stato rimosso:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB

L'approccio meno ambiguo, anche se 3 anni dopo. +1
bvj

0

Tagga un'altra immagine con il nome del tuo tag e successivamente il tag dall'immagine corrente verrà rimosso.


Benvenuti in ServerFault! Si prega di chiarire o aggiungere alcuni passaggi di esempio di comando. Dai un'occhiata alla guida qui: serverfault.com/help/how-to-answer
Cory Knutson

Non è una risposta utile, se il tag fosse un refuso come indicato, non lo vorresti nemmeno su qualche altra immagine.
Ken Williams,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.