Cómo agregar, reemplazar y eliminar etiquetas de imágenes de Docker - CloudSavvy España

Docker usa etiquetas para identificar distintas versiones de una imagen. Al igual que la comunidad de contenedores más amplia, se deben usar etiquetas para marcar cada lanzamiento para que los usuarios puedan seleccionar entre diferentes versiones.

Las etiquetas también se pueden usar para describir otras características de una imagen, como la identidad de una dependencia clave cuando se ofrecen varias opciones. No es raro encontrar proveedores de imágenes que ofrecen este tipo de etiquetas:

example-image:1.1.0-apache
example-image:1.1.0-nginx
example-image:1.2.0-apache
example-image:1.2.0-nginx

Este esquema de etiquetas le permite elegir entre diferentes versiones de la imagen mientras ofrece Apache o NGINX como base de la imagen.

Puede agregar sus propias etiquetas a cualquier imagen que cree o extraiga. Las etiquetas locales le brindan una forma de identificar rápidamente imágenes específicas en el futuro. En esta guía, le mostraremos cómo administrar etiquetas de imágenes con la CLI de Docker.

Las etiquetas se agregan a las imágenes usando el docker tag mando. Las etiquetas también se pueden adjuntar cuando está creando una imagen con docker build al pasar el -t bandera.

los tag El comando toma dos argumentos: un existente etiqueta que identifica una imagen y una nueva etiqueta de "objetivo" para asignar a esa imagen:

# docker tag <source image> <new tag>
docker tag example-image:1.1.0 example-image:1.1.0-apache

Ambas etiquetas ahora se referirán a la misma imagen para que pueda comenzar a usarlas indistintamente. Sin embargo, correr docker pull example-image:1.1.0 no afectaría a la 1.1.0-apache etiqueta. La referencia de imagen de una etiqueta no se actualiza a menos que la haya incluido manualmente en un comando CLI.

La única excepción a esta regla es el a menudo mal entendido latest etiqueta. Cuando extrae una imagen "desnuda" sin una etiqueta, como docker pull example-imageDocker usa implícitamente latest.

Índice de contenidos
  1. Imágenes sin etiquetar
  2. Resumen

Imágenes sin etiquetar

los docker tag El comando aceptará ID de imagen como referencia de origen en lugar de una etiqueta existente. Si termina con una imagen sin etiquetar, ejecute el docker images comando para encontrar su ID, luego use docker tag para asignar una nueva etiqueta:

docker tag 0e3e06b48755 example-image:latest

Es posible tener imágenes sin etiquetar cuando sacas una nueva versión de una etiqueta:

# already has example-image:latest
docker pull example-image:latest

El objetivo original de la example-image:latest la etiqueta todavía existe en su sistema pero ahora no está etiquetada. El pull descargó los nuevos datos de imagen y reasignó el latest etiqueta para hacer referencia a ella.

Una situación en la que necesita agregar una nueva etiqueta es cuando está enviando imágenes entre registros. La URL del registro es parte de la etiqueta. Agregue una nueva etiqueta que incluya el registro al que desea enviar, luego use docker push para subirlo:

docker tag example-image:latest registry.example.com/example-image:latest
docker push registry.example.com/example-image:latest

Al presionar una etiqueta simple sin un componente de URL, se enviarán los datos de la imagen a Docker Hub. En consecuencia, debe agregar una etiqueta con el nombre de host de su servidor y el número de puerto opcional cuando esté interactuando con un registro privado.

los docker tag El comando reemplazará silenciosamente la referencia de una etiqueta si se usa una etiqueta existente como objetivo:

docker tag first-image:latest demo
docker tag second-image:latest demo

los demo etiqueta ahora se refiere a second-image y no se puede usar para hacer referencia first-image. Todavía puede interactuar con la primera imagen usando su etiqueta restante, first-image:latest. La segunda imagen se puede seleccionar con second-image:latest o demo.

Las etiquetas de imagen generalmente deben tratarse como inmutables. Es mejor evitar esta técnica de modificar la referencia de una etiqueta, excepto en el caso de las etiquetas que está utilizando con fines organizativos locales. No es una buena idea enviar una etiqueta actualizada a un registro público, ya que los usuarios que dependan de ella recibirán una imagen modificada inesperadamente la próxima vez que la extraigan. Empuje otra etiqueta nueva en su lugar en esta situación.

# Build and push v1
docker build -t example-image:v1 .
docker push example-image:v1

# v1 now refers to different image data
# This is fine for local use (tags in the 
# registry are independent of your local tags).
docker build -t example-image:v1 .

# Don't do this - now the tag in the registry
# has been changed too, which could negatively 
# impact existing users.
docker push example-image:v1

Puede eliminar las etiquetas de las imágenes que ha extraído de su máquina. Utilizar el docker rmi comando, especificando la etiqueta que desea eliminar:

docker rmi example-image:1.1.0-apache

Cualquier otra etiqueta que haga referencia a los mismos datos de imagen seguirá siendo utilizable. En caso de que la imagen a la que se hace referencia no se etiquete, la CLI de Docker elimina los datos de la imagen por completo. Esto garantiza que no termine con imágenes sin etiquetar como resultado de instrucciones de eliminación explícitas.

La eliminación de una etiqueta solo tiene efecto localmente, incluso si hace referencia a una etiqueta que incluye una URL de registro:

# Does not remove the tag from the registry!
docker rmi registry.example.com/example-image:latest

Actualmente no puede eliminar una etiqueta específica de un registro. Esto está de acuerdo con el principio de inmutabilidad de etiquetas: una vez que haya enviado contenido, los consumidores finales podrían usarlo como una dependencia, por lo que la API del registro omite un punto final de eliminación de etiquetas. Sin embargo, muchas implementaciones de registros de terceros proporcionan un mecanismo equivalente; vale la pena consultar la documentación si tiene una razón convincente para eliminar una etiqueta insertada.

Resumen

Las etiquetas se utilizan para etiquetar las imágenes de Docker con información distintiva clave, como su versión de compilación y las dependencias incluidas. Es mucho más fácil trabajar con las etiquetas que con los ID SHA de imágenes que puede ver docker images. Las etiquetas también son el mecanismo principal para interactuar con imágenes en registros remotos.

Puede administrar sus propias etiquetas en su máquina local, pero los cambios no afectarán el contenido del registro. También debe considerar que aunque las etiquetas están mutable, no se debe abusar de esta propiedad y es mejor evitarla al insertar etiquetas en un registro. Esto ayuda a proteger a sus usuarios de cambios importantes no deseados.

Descubre más contenido

Subir Change privacy settings