Comment supprimer une balise d'image dans Docker sans supprimer l'image elle-même?

135

Supposons que je veuille taguer une image Docker et créer une faute de frappe. Comment puis-je supprimer le tag sans supprimer l'image elle-même? Ni les pages de manuel ni la documentation de Docker ne mentionnent la suppression de balises.

docker tag 0e5574283393 my-imaj
docker tag 0e5574283393 my-image
# docker untag my-imaj # There is no "docker untag"!
Mihai
la source
4
Pour ceux qui veulent supprimer les <none>balises étiquetées telles que foo/bar:<none>: utiliser docker images --digestset docker rmi foo/bar@<digest>comme décrit sur success.docker.com/KBase/…
Janaka Bandara

Réponses:

195

Si votre image est étiquetée avec plusieurs balises, elle docker rmisera supprimée, mais pas l'image.

Donc, dans votre exemple ...

# docker rmi my-imaj

... enlèvera cette balise et laissera l'image présente avec l'autre balise correcte.

Richard Corfield
la source
4
Merci. Je souhaite qu'ils mentionnent cela dans la documentation: - /
Mihai
2
Si la balise que je supprime est la dernière, l'image sera supprimée. Alors je me demande quelle est la réponse à la question dans le sujet? Comment puis-je supprimer le tag et conserver l'image en cache?
kub1x
4
Et la réponse est comme toujours utiliser--help , ne soyez pas paresseux à lire. docker image remove --no-prune.. au cas où quelqu'un serait intéressé.
kub1x
4
C'est faux, cela a simplement supprimé mon image. Heureusement, sachant que Docker était déjà suspect, j'ai déjà créé une sauvegarde avec docker save.
user259412
2
@peterh, la réponse indique clairement If your image is tagged with more than one tag...qu'elle doit être mise à jour avec la commande des commentaires expliquant comment supprimer la dernière balise sans supprimer l'image.
BrainSlugs83
18

A partir d'un dépôt de menu fixe vide, importez une image en tapant:

#docker run hello-world

Exécutez la docker imagescommande pour répertorier les images. Le résultat devrait ressembler à ceci:

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

Créons maintenant une balise d'image appelée v1 en exécutant la docker tagcommande:

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

Si nous lançons la docker imagescommande, nous verrons notre nouvelle balise comme ceci:

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

Pour supprimer une balise spécifique (pour répondre à la question d'origine), exécutez le menu fixe rmi hello-world:v1v1 est le nom de la balise. La sortie ressemblera à ceci:

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

Exécutez la docker imagescommande pour répertorier les images. Notez que la balise d'image a été supprimée:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB
Travis Rennemann
la source
L'approche la moins ambiguë, bien que 3 ans plus tard. +1
bvj
18

Exécuter docker rmi REPOSITORY:TAGpour supprimer la balise.

Les valeurs REPOSITORYet TAGproviennent de la docker imagessortie.

Par exemple

$ docker rmi my-image:0e5574283393
Untagged: my-image:0e5574283393
Ashishjain
la source
blog.tmtk.net/2013/09/16/how_to_remove_tag_on_docker.html . Cela peut vous fournir une aide supplémentaire
ashishjain
0

Marquez une autre image avec votre nom de balise et ensuite, votre balise de votre image actuelle sera supprimée.

Nikolay
la source
Bienvenue sur ServerFault! Veuillez clarifier ou ajouter des exemples de commandes. Consultez le guide ici: serverfault.com/help/how-to-answer
Cory Knutson
Pas de réponse utile, si le tag était une faute de frappe comme indiqué, vous ne le voudriez pas non plus sur une autre image.
Ken Williams