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.
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/ubuntuomyuser/myapp). Si no se especifica un espacio de nombres para las imágenes oficiales en Docker Hub, se asume el espacio de nombreslibrary/(por ejemplo,ubuntues equivalente alibrary/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 etiquetalatestcomo valor predeterminado.
Veamos algunos ejemplos:
ubuntu: Esto se refiere a la etiquetalatestde la imagen oficialubuntuen Docker Hub.ubuntu:20.04: Esto se refiere a la etiqueta20.04de la imagen oficialubuntuen Docker Hub.myuser/myapp: Esto se refiere a la etiquetalatestde la imagenmyappen el repositoriomyuseren Docker Hub.myuser/myapp:v1.0: Esto se refiere a la etiquetav1.0de la imagenmyappen el repositoriomyuseren Docker Hub.myregistry.example.com:5000/myuser/myapp:v1.0: Esto se refiere a la etiquetav1.0de la imagenmyappen el repositoriomyuseren el registro privado ubicado enmyregistry.example.comen el puerto5000.
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 usando 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 usando 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 usando 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.



