8.1 Etiquetado en Docker
El etiquetado en Docker es el proceso de asignar una etiqueta a una imagen, lo que facilita la gestión de versiones. Esto hace que el despliegue y la actualización de aplicaciones sean más convenientes y manejables. En esta lección, analizaremos en detalle qué son las etiquetas, cómo usarlas y qué recomendaciones te pueden ayudar a trabajar con ellas de manera más eficiente.
Etiqueta (tag) en Docker — una etiqueta que permite identificar una versión específica de una imagen. Las etiquetas hacen que sea más fácil rastrear cambios y elegir las versiones necesarias para diferentes entornos, como desarrollo, pruebas y producción.
Conceptos básicos de las etiquetas:
- Unicidad: una etiqueta identifica de forma única una versión específica de una imagen.
- Versionado: mediante etiquetas se designan versiones de imágenes, por ejemplo, v1.0, v2.0, latest.
- Flexibilidad: las etiquetas se usan para crear imágenes que correspondan a etapas específicas de desarrollo, como
beta
,stable
,prod
.
8.2 Cómo usar etiquetas
1. Asignar etiquetas al construir una imagen
Puedes asignar una etiqueta a una imagen al construirla usando el parámetro -t
del comando docker build
.
Ejemplo:
En este ejemplo, a la imagen se le asigna el nombre myapp
y la etiqueta 1.0.
docker build -t myapp:1.0 .
2. Asignar etiquetas adicionales a una imagen existente
Puedes agregar etiquetas a una imagen existente usando el comando docker tag
.
Ejemplo:
Este ejemplo asigna a la imagen myapp:1.0
una etiqueta adicional latest
.
docker tag myapp:1.0 myapp:latest
3. Usar etiquetas al iniciar contenedores
Cuando inicias un contenedor, puedes especificar una etiqueta concreta de la imagen que quieras usar.
Ejemplo:
Este ejemplo inicia un contenedor basado en la imagen myapp
con la etiqueta 1.0
.
docker run -d myapp:1.0
8.3 Práctica de etiquetado
Uso de versionamiento semántico
El versionamiento semántico (Semantic Versioning) es una práctica estándar de asignar versiones que ayuda a entender el nivel de cambios en la imagen.
Formato del versionamiento semántico:
<major>.<minor>.<patch>
Donde:
-
major
: Cambios principales, incompatibles con versiones anteriores. -
minor
: Nuevas funcionalidades compatibles con versiones anteriores. -
patch
: Corrección de errores y otros cambios menores.
Ejemplo:
docker build -t myapp:2.1.3 .
Uso de etiquetas adicionales
Las etiquetas adicionales ayudan a indicar el estado de la imagen, por ejemplo, beta
, alpha
, stable
o prod
.
Ejemplo:
docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .
Actualización de etiquetas
Al actualizar una imagen, se recomienda cambiar las etiquetas para facilitar el seguimiento de los cambios. La etiqueta latest
se usa frecuentemente para indicar la última versión de la imagen.
Ejemplo:
docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest
8.4 Ejemplos de uso de tags
Ejemplos de cómo usar tags en diferentes entornos:
Ejemplo 1: Desarrollo
Para desarrollo, a menudo se utilizan imágenes con tags que indican la versión actual o el estado de desarrollo, por ejemplo, dev
.
docker build -t myapp:dev .
docker run -d myapp:dev
Ejemplo 2: Pruebas
En entornos de pruebas se usan imágenes con tags que representan versiones específicas o estados, como beta.
docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta
Ejemplo 3: Producción
En entornos de producción es importante usar versiones estables y verificadas de imágenes, marcadas con tags como stable
, prod
, o versiones semánticas como 1.1.0-stable
.
docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable
8.5 Mejores prácticas
1. Usar siempre versionado semántico
Sigue las reglas del versionado semántico para todas las imágenes. Esto ayuda a distinguir claramente los niveles de cambio y facilita la gestión de versiones.
2. Usar tags claros y significativos
Usa tags que reflejen claramente el estado o propósito de la imagen (por ejemplo, beta
, stable
, prod
).
3. Evitar usar latest en producción
El tag latest
puede ser útil para desarrollo y pruebas, pero en producción es mejor usar versiones específicas para evitar cambios inesperados.
4. Documentar el uso de los tags
Documenta cómo y para qué se usan los tags en tu proyecto. Esto ayudará al equipo a entender mejor el proceso de versionado y reducirá la posibilidad de errores.
Ejemplos de Dockerfile usando tags
Ejemplo 1: Crear y asignar tags
# Dockerfile para la versión 1.0.0
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
Comandos para construir y asignar tags
docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable
Ejemplo 2: Actualizar la imagen y asignar tags
# Dockerfile para la versión 1.1.0 con nueva funcionalidad
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf /app/tests /app/docs
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "app.js"]
Comandos para construir y asignar tags
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
GO TO FULL VERSION