Cómo usar el comando docker image tag para gestionar alias de imágenes

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo gestionar de manera efectiva los alias de imágenes Docker utilizando el comando docker image tag. Comenzaremos por entender la estructura y los componentes de las referencias de imágenes Docker, que son esenciales para identificar y localizar versiones específicas de imágenes.

Después de comprender los conceptos básicos de las referencias de imágenes, adquirirás experiencia práctica etiquetando imágenes utilizando varios métodos: por su ID, por su nombre existente y por la combinación de nombre y etiqueta. Finalmente, aprenderás cómo etiquetar una imagen específicamente para su uso con un registro privado de Docker, lo que te permitirá enviar y recibir imágenes desde ubicaciones personalizadas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/tag("Tag an Image") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/pull -.-> lab-555163{{"Cómo usar el comando docker image tag para gestionar alias de imágenes"}} docker/tag -.-> lab-555163{{"Cómo usar el comando docker image tag para gestionar alias de imágenes"}} docker/images -.-> lab-555163{{"Cómo usar el comando docker image tag para gestionar alias de imágenes"}} end

Comprender las referencias de imágenes Docker

En este paso, aprenderemos sobre las referencias de imágenes Docker. Una referencia de imagen Docker es un nombre que apunta a una versión específica de una imagen Docker. Es la forma en que le dices a Docker qué imagen quieres utilizar cuando ejecutas un contenedor o realizas otras operaciones relacionadas con imágenes.

Una referencia de imagen completa generalmente consta de varias partes:

[registry_hostname[:port]/]image_name[:tag]

Desglosemos estas partes:

  • registry_hostname[:port]: Este es el nombre de host y, opcionalmente, el puerto del registro Docker donde se almacena la imagen. Si se omite esta parte, Docker utiliza Docker Hub (docker.io) como valor predeterminado.
  • image_name: Este es el nombre de la imagen. Puede incluir un espacio de nombres (por ejemplo, library/ubuntu o myuser/myapp). Si no se especifica un espacio de nombres para las imágenes oficiales en Docker Hub, se asume el espacio de nombres library/ (por ejemplo, ubuntu es equivalente a library/ubuntu).
  • tag: Esta es una etiqueta opcional que especifica una versión o variante específica de la imagen. Si no se especifica ninguna etiqueta, Docker utiliza la etiqueta latest como valor predeterminado.

Veamos algunos ejemplos:

  • ubuntu: Esto se refiere a la etiqueta latest de la imagen oficial ubuntu en Docker Hub.
  • ubuntu:20.04: Esto se refiere a la etiqueta 20.04 de la imagen oficial ubuntu en Docker Hub.
  • myuser/myapp: Esto se refiere a la etiqueta latest de la imagen myapp en el repositorio myuser en Docker Hub.
  • myuser/myapp:v1.0: Esto se refiere a la etiqueta v1.0 de la imagen myapp en el repositorio myuser en Docker Hub.
  • myregistry.example.com:5000/myuser/myapp:v1.0: Esto se refiere a la etiqueta v1.0 de la imagen myapp en el repositorio myuser en el registro privado ubicado en myregistry.example.com en el puerto 5000.

Para ver cómo funcionan las referencias de imágenes en la práctica, vamos a descargar una imagen utilizando su referencia. Descargaremos la imagen hello-world, que es una imagen muy pequeña utilizada para probar las instalaciones de Docker.

docker pull hello-world

Deberías ver una salida que indique que Docker está descargando la imagen.

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Este comando descargó la etiqueta latest de la imagen hello-world de Docker Hub. La salida confirma la referencia completa docker.io/library/hello-world:latest.

Ahora, listemos las imágenes que has descargado.

docker images

Deberías ver la imagen hello-world en la lista.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    <image_id>     <created_time>   <size>

La salida muestra el REPOSITORY (nombre de la imagen), TAG, IMAGE ID, la fecha de CREATED y el SIZE de la imagen. El IMAGE ID es un identificador único para el contenido de la imagen.

Comprender las referencias de imágenes es crucial para trabajar con Docker, ya que te permite especificar exactamente qué imagen quieres utilizar.

Etiquetar una imagen utilizando su ID

En este paso, aprenderemos cómo etiquetar una imagen Docker utilizando su ID de imagen. Etiquetar una imagen te permite darle un nuevo nombre y/o etiqueta, creando una nueva referencia que apunta al mismo contenido de la imagen. Esto es útil para crear alias, versionar o preparar una imagen para ser enviada a un registro diferente.

El comando básico para etiquetar una imagen es docker tag. La sintaxis es:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Puedes especificar la imagen de origen utilizando su ID de imagen, su nombre o su nombre y etiqueta. En este paso, utilizaremos el ID de imagen.

Primero, listemos las imágenes nuevamente para obtener el ID de imagen de la imagen hello-world que descargamos en el paso anterior.

docker images

Encuentra la imagen hello-world en la salida y anota su IMAGE ID. Será una cadena de caracteres hexadecimales, por ejemplo, bf756fb1cdb1. Solo necesitas utilizar los primeros caracteres del ID, siempre y cuando sean únicos entre tus imágenes.

Ahora, etiquetemos la imagen hello-world utilizando su ID de imagen. La etiquetaremos con un nuevo nombre, my-hello-world, y una etiqueta v1.0. Reemplaza <image_id> con el ID de imagen real que anotaste de la salida de docker images.

docker tag < image_id > my-hello-world:v1.0

No habrá salida si el comando es exitoso.

Ahora, listemos las imágenes nuevamente para ver la nueva etiqueta.

docker images

Ahora deberías ver una nueva entrada con el repositorio my-hello-world y la etiqueta v1.0. Observa que tiene el mismo IMAGE ID que la imagen original hello-world. Esto confirma que la nueva etiqueta es solo un puntero al mismo contenido de la imagen.

REPOSITORY       TAG       IMAGE ID       CREATED        SIZE
hello-world      latest    <image_id>     <created_time>   <size>
my-hello-world   v1.0      <image_id>     <created_time>   <size>

Has etiquetado exitosamente una imagen utilizando su ID de imagen. Esta es una operación fundamental en la gestión de imágenes Docker.

Etiquetar una imagen utilizando su nombre

En este paso, aprenderemos cómo etiquetar una imagen Docker utilizando su nombre. Esta es otra forma común de referirse a una imagen al etiquetarla. Cuando se utiliza solo el nombre de la imagen sin una etiqueta, Docker asume que se está refiriendo a la imagen con la etiqueta latest.

La sintaxis para etiquetar utilizando el nombre de la imagen es la misma que antes:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Esta vez, nuestra SOURCE_IMAGE será el nombre de la imagen. Volveremos a utilizar la imagen hello-world. Dado que no especificamos una etiqueta para la imagen de origen, Docker utilizará hello-world:latest.

Etiquetemos la imagen hello-world con un nuevo nombre, another-hello-world, y una etiqueta v2.0.

docker tag hello-world another-hello-world:v2.0

Nuevamente, no habrá salida si el comando es exitoso.

Ahora, listemos las imágenes para ver la nueva etiqueta.

docker images

Ahora deberías ver una nueva entrada con el repositorio another-hello-world y la etiqueta v2.0. Al igual que en el paso anterior, esta nueva etiqueta también apunta al mismo IMAGE ID que la imagen original hello-world.

REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
hello-world         latest    <image_id>     <created_time>   <size>
my-hello-world      v1.0      <image_id>     <created_time>   <size>
another-hello-world v2.0      <image_id>     <created_time>   <size>

Has etiquetado exitosamente una imagen utilizando su nombre. Esta es una forma conveniente de crear nuevas etiquetas para la versión latest de una imagen.

Etiquetar una imagen utilizando su nombre y etiqueta

En este paso, aprenderemos cómo etiquetar una imagen Docker utilizando su nombre y etiqueta. Esta es la forma más específica de referirse a una versión particular de una imagen al etiquetarla.

La sintaxis sigue siendo la misma:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Esta vez, nuestra SOURCE_IMAGE se especificará tanto con su nombre como con su etiqueta. Utilizaremos la imagen my-hello-world:v1.0 que creamos en un paso anterior.

Etiquetemos la imagen my-hello-world:v1.0 con un nuevo nombre, yet-another-hello-world, y una etiqueta release.

docker tag my-hello-world:v1.0 yet-another-hello-world:release

No habrá salida si el comando es exitoso.

Ahora, listemos las imágenes para ver la nueva etiqueta.

docker images

Ahora deberías ver una nueva entrada con el repositorio yet-another-hello-world y la etiqueta release. Esta nueva etiqueta también apunta al mismo IMAGE ID que la imagen original hello-world y las otras etiquetas que creamos.

REPOSITORY              TAG       IMAGE ID       CREATED        SIZE
hello-world             latest    <image_id>     <created_time>   <size>
my-hello-world          v1.0      <image_id>     <created_time>   <size>
another-hello-world     v2.0      <image_id>     <created_time>   <size>
yet-another-hello-world release   <image_id>     <created_time>   <size>

Has etiquetado exitosamente una imagen utilizando su nombre y etiqueta. Este método es útil cuando se desea crear una nueva etiqueta basada en una versión etiquetada específica existente de una imagen.

Etiquetar una imagen para un registro privado

En este paso, aprenderemos cómo etiquetar una imagen Docker para que se pueda enviar a un registro privado. Cuando se etiqueta una imagen para un registro privado, se debe incluir el nombre de host y, opcionalmente, el puerto del registro en la referencia de la imagen de destino.

La sintaxis para etiquetar sigue siendo:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

La TARGET_IMAGE ahora incluirá la información del registro:

[registry_hostname[:port]/]image_name[:tag]

Imaginemos que tenemos un registro privado funcionando en myregistry.example.com en el puerto 5000. Etiquetaremos la imagen hello-world (utilizando su etiqueta latest) para prepararla para enviar a este hipotético registro. Le daremos el nombre my-hello-world y la etiqueta prod.

docker tag hello-world:latest myregistry.example.com:5000/my-hello-world:prod

No habrá salida si el comando es exitoso.

Ahora, listemos las imágenes para ver la nueva etiqueta con el nombre del registro.

docker images

Ahora deberías ver una nueva entrada con el repositorio myregistry.example.com:5000/my-hello-world y la etiqueta prod. Esta etiqueta también apunta al mismo IMAGE ID que la imagen original hello-world.

REPOSITORY                                TAG       IMAGE ID       CREATED        SIZE
hello-world                               latest    <image_id>     <created_time>   <size>
my-hello-world                            v1.0      <image_id>     <created_time>   <size>
another-hello-world                       v2.0      <image_id>     <created_time>   <size>
yet-another-hello-world                   release   <image_id>     <created_time>   <size>
myregistry.example.com:5000/my-hello-world prod      <image_id>     <created_time>   <size>

Has etiquetado exitosamente una imagen con una referencia que incluye el nombre de host y el puerto de un registro privado. Este es un paso necesario antes de poder enviar la imagen a ese registro utilizando el comando docker push.

Resumen

En este laboratorio, aprendimos sobre las referencias de imágenes Docker, comprendiendo su estructura, que incluye el nombre de host opcional del registro, el nombre de la imagen y la etiqueta. Vimos cómo se utilizan estas referencias para identificar de manera única y descargar versiones específicas de imágenes desde los registros de Docker.

Luego, exploramos cómo usar el comando docker image tag para crear alias para imágenes existentes. Practicamos etiquetar una imagen utilizando su ID, su nombre existente y la combinación de su nombre y etiqueta existentes. Finalmente, aprendimos cómo etiquetar una imagen con una referencia que incluye el nombre de host de un registro privado, preparándola para ser enviada a un registro personalizado.