¿Cómo eliminar una etiqueta de imagen en Docker sin eliminar la imagen en sí?

135

Digamos que quiero etiquetar una imagen de Docker y hacer un error tipográfico. ¿Cómo elimino la etiqueta sin eliminar la imagen en sí? Ni las páginas de manual ni la documentación de Docker mencionan la eliminación de etiquetas.

docker tag 0e5574283393 my-imaj
docker tag 0e5574283393 my-image
# docker untag my-imaj # There is no "docker untag"!
Mihai
fuente
44
Para aquellos que desean <none>etiquetar imágenes como foo/bar:<none>: usar docker images --digestsy docker rmi foo/bar@<digest>como se describe en success.docker.com/KBase/…
Janaka Bandara

Respuestas:

195

Si su imagen está etiquetada con más de una etiqueta, docker rmieliminará la etiqueta, pero no la imagen.

Entonces en tu ejemplo ...

# docker rmi my-imaj

... eliminará esa etiqueta y dejará la imagen presente con la otra etiqueta correcta.

Richard Corfield
fuente
44
Gracias. Me gustaría que mencionaran esto en la documentación: - /
Mihai
2
Sin embargo, si la etiqueta que estoy eliminando es la última, la imagen se eliminará. Entonces, me pregunto cuál es la respuesta a la pregunta del tema. ¿Cómo elimino la etiqueta y mantengo la imagen en caché?
kub1x
44
Y la respuesta es como siempre usar--help , no seas perezoso para leer. docker image remove --no-prune.. en caso de que alguien esté interesado.
kub1x
44
Esto es falso, simplemente eliminó mi imagen. Afortunadamente, conociendo a Docker ya sospechaba, y creé una copia de seguridad antes con docker save.
user259412
2
@peterh la respuesta indica claramente If your image is tagged with more than one tag..., sin embargo, debe actualizarse con el comando de los comentarios que explica cómo eliminar la última etiqueta sin eliminar la imagen.
BrainSlugs83
18

Comenzando desde un repositorio de docker vacío, importe una imagen escribiendo:

#docker run hello-world

Ejecute el docker imagescomando para enumerar las imágenes. El resultado debería verse así:

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

Ahora creemos una etiqueta de imagen llamada v1 ejecutando el docker tagcomando:

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

Si ejecutamos el docker imagescomando, veremos nuestra nueva etiqueta como esta:

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

Para eliminar una etiqueta específica (para responder a la pregunta original), ejecute el docker rmi hello-world:v1donde v1 es el nombre de la etiqueta. La salida se verá así:

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

Ejecute el docker imagescomando para enumerar las imágenes. Observe que la etiqueta de la imagen se ha eliminado:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB
Travis Rennemann
fuente
El enfoque menos ambiguo, aunque 3 años después. +1
bvj
18

Ejecutar docker rmi REPOSITORY:TAGpara eliminar la etiqueta.

Los valores REPOSITORYy TAGprovienen de la docker imagessalida.

Por ejemplo

$ docker rmi my-image:0e5574283393
Untagged: my-image:0e5574283393
ashishjain
fuente
blog.tmtk.net/2013/09/16/how_to_remove_tag_on_docker.html . Esto puede proporcionarle más ayuda
ashishjain 03 de
0

Etiquete otra imagen con su nombre de etiqueta y luego se eliminará su etiqueta de su imagen actual.

Nikolay
fuente
¡Bienvenido a ServerFault! Aclare o agregue algunos pasos de ejemplo de comando. Mira la guía aquí: serverfault.com/help/how-to-answer
Cory Knutson
No es una respuesta útil, si la etiqueta era un error tipográfico como se indica, tampoco lo querría en otra imagen.
Ken Williams