Subir imágenes a Docker Hub

Intermedio
Docker
Docker
Actualizado: 13/08/2025

¡Desbloquea el curso de Docker completo!

IA
Ejercicios
Certificado
Entrar

Mira la lección en vídeo

Accede al vídeo completo de esta lección y a más contenido exclusivo con el Plan Plus.

Desbloquear Plan Plus

Autenticación y etiquetas

La publicación de imágenes en Docker Hub requiere dos elementos fundamentales: estar autenticado con una cuenta válida y aplicar un etiquetado correcto que incluya el namespace del usuario. Sin estos requisitos, no es posible compartir nuestras imágenes personalizadas con otros desarrolladores o equipos.

Autenticación con Docker Hub

El comando docker login establece la conexión segura entre nuestro entorno local y Docker Hub. Este proceso almacena las credenciales de forma cifrada en nuestro sistema, permitiendo realizar operaciones de push y pull en repositorios privados.

docker login

Al ejecutar este comando, Docker solicitará las credenciales de acceso:

Username: tu-usuario-dockerhub
Password: tu-token-acceso

Es importante destacar que Docker Hub recomienda utilizar tokens de acceso personal en lugar de contraseñas directas. Estos tokens ofrecen mayor seguridad y control granular sobre los permisos:

  • 1. Crear un token de acceso: Desde la configuración de cuenta en Docker Hub
  • 2. Configurar permisos específicos: Lectura, escritura o administración de repositorios
  • 3. Usar el token como contraseña: En el proceso de login
# Verificar el estado de autenticación
docker system info | grep Username

La información de login se almacena en el archivo ~/.docker/config.json en sistemas Unix, o en %USERPROFILE%\.docker\config.json en Windows.

Sistema de etiquetado y namespace

El etiquetado correcto es esencial para organizar y versionar las imágenes en Docker Hub. El formato estándar sigue la estructura namespace/repository:tag, donde cada componente tiene un propósito específico.

Estructura del namespace:

usuario-dockerhub/nombre-imagen:etiqueta
  • Usuario: Corresponde al nombre de usuario en Docker Hub
  • Nombre de imagen: Identifica el proyecto o aplicación
  • Etiqueta: Especifica la versión o variante

Ejemplo práctico con una aplicación web:

# Etiquetar una imagen local para Docker Hub
docker tag mi-app:latest miusuario/mi-app:1.0.0

# Verificar el etiquetado
docker images miusuario/mi-app

Buenas prácticas de etiquetado

Un versionado semántico facilita la gestión y actualización de imágenes en entornos empresariales. Las etiquetas deben ser descriptivas y seguir patrones consistentes.

Patrones recomendados:

  • 1. Versionado semántico: 1.0.0, 2.1.3, 3.0.0-beta
docker tag nginx:alpine miusuario/mi-nginx:1.2.0
docker tag nginx:alpine miusuario/mi-nginx:1.2
docker tag nginx:alpine miusuario/mi-nginx:1
  • 2. Etiquetas descriptivas: stable, dev, production
docker tag mi-app:latest miusuario/mi-app:stable
docker tag mi-app:dev miusuario/mi-app:development
  • 3. Etiquetas por entorno: staging, prod, test
docker tag postgresql:15 miusuario/mi-db:prod-v2.1
docker tag postgresql:15 miusuario/mi-db:staging-v2.1

Gestión de múltiples etiquetas

Una imagen puede tener múltiples etiquetas que apunten al mismo contenido, facilitando diferentes estrategias de despliegue y versionado.

# Crear múltiples etiquetas para la misma imagen
docker tag mi-app:build-123 miusuario/mi-app:1.5.0
docker tag mi-app:build-123 miusuario/mi-app:1.5
docker tag mi-app:build-123 miusuario/mi-app:latest
docker tag mi-app:build-123 miusuario/mi-app:stable

Verificar todas las etiquetas:

docker images miusuario/mi-app

Este enfoque permite que los equipos de desarrollo utilicen latest para pruebas rápidas, mientras que producción puede anclar versiones específicas como 1.5.0 para mayor estabilidad.

Preparación para publicación

Antes de realizar el push, es fundamental verificar la configuración y asegurar que las etiquetas sean correctas:

# Listar imágenes preparadas para publicación
docker images | grep miusuario

# Verificar la autenticación actual
docker system info | grep -i registry

El namespace debe coincidir exactamente con el nombre de usuario de Docker Hub. Un error común es utilizar mayúsculas o caracteres especiales no permitidos en el namespace.

Push y visibilidad

Guarda tu progreso

Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

Más de 25.000 desarrolladores ya confían en CertiDevs

Una vez que tenemos nuestras imágenes correctamente etiquetadas y estamos autenticados, el siguiente paso es publicarlas en Docker Hub y configurar su visibilidad según las necesidades del proyecto. Este proceso implica entender las opciones de acceso y las limitaciones del servicio.

Publicación con docker push

El comando docker push transfiere la imagen desde nuestro entorno local hacia el registro de Docker Hub. Este proceso sube todas las capas que componen la imagen, optimizando la transferencia mediante deduplicación.

# Publicar una imagen específica
docker push miusuario/mi-app:1.0.0

Durante el push, Docker muestra el progreso de cada capa:

The push refers to repository [docker.io/miusuario/mi-app]
a8c6f4d4d4d4: Pushed 
b7d8e9f0f1f2: Pushed 
c9e2f3g4g5g6: Pushed 
1.0.0: digest: sha256:abc123... size: 1234

Publicar múltiples etiquetas simultáneamente:

# Subir todas las etiquetas de un repositorio
docker push miusuario/mi-app --all-tags

Configuración de visibilidad de repositorios

Docker Hub ofrece dos niveles de visibilidad para los repositorios: público y privado. Esta configuración determina quién puede acceder y descargar nuestras imágenes.

Repositorios públicos

Los repositorios públicos son accesibles para cualquier usuario sin autenticación. Son ideales para proyectos de código abierto y herramientas que queremos compartir con la comunidad.

Características de repositorios públicos:

  • Acceso libre: Cualquier usuario puede realizar docker pull
  • Visibilidad completa: Aparecen en búsquedas públicas de Docker Hub
  • Sin límite de pulls: Los usuarios autenticados no tienen restricciones
  • Ideal para: Librerías, herramientas open source, imágenes base personalizadas
# Cualquier usuario puede descargar sin autenticación
docker pull miusuario/mi-herramienta:latest

Repositorios privados

Los repositorios privados requieren autenticación específica para acceder al contenido. Son esenciales para aplicaciones empresariales y proyectos con código propietario.

Características de repositorios privados:

  • Acceso restringido: Solo usuarios autorizados pueden descargar
  • Control de permisos: Gestión granular de colaboradores
  • Privacidad: No aparecen en búsquedas públicas
  • Límites por plan: Cuentas gratuitas tienen restricciones
# Requiere autenticación previa
docker login
docker pull miusuario/mi-app-privada:1.0.0

Gestión de colaboradores y permisos

Para repositorios privados, Docker Hub permite configurar diferentes niveles de acceso para colaboradores del equipo.

Niveles de permisos disponibles:

  • 1. Read: Solo descarga de imágenes
  • 2. Write: Descarga y subida de nuevas versiones
  • 3. Admin: Control completo incluyendo configuración

La gestión se realiza desde la interfaz web de Docker Hub, en la sección de configuración del repositorio específico.

Rate limits y limitaciones

Docker Hub implementa límites de descarga para controlar el uso del servicio y garantizar la disponibilidad para todos los usuarios.

Límites para usuarios anónimos

Los usuarios no autenticados tienen restricciones más estrictas:

  • 100 pulls cada 6 horas por dirección IP
  • Medición por IP: Afecta a toda la red/organización
  • Reset automático: El contador se reinicia cada 6 horas
# Verificar límites actuales (requiere autenticación)
docker manifest inspect miusuario/mi-app:latest -v

Límites para usuarios autenticados

Los usuarios con cuentas gratuitas de Docker Hub tienen límites más generosos:

  • 200 pulls cada 6 horas por cuenta
  • Límites independientes: Cada cuenta tiene su propio contador
  • Repositorios privados: Limitaciones adicionales según el plan

Planes de suscripción

Docker Hub ofrece planes comerciales que eliminan o incrementan significativamente estos límites:

  • Docker Pro: Límites ampliados y repositorios privados ilimitados
  • Docker Team: Gestión de equipos y colaboración empresarial
  • Docker Business: Características avanzadas de seguridad y administración

Buenas prácticas para la publicación

Una estrategia de publicación consistente mejora la experiencia de los usuarios y facilita el mantenimiento a largo plazo.

Gestión de la etiqueta latest

La etiqueta latest debe utilizarse con criterio, ya que puede causar problemas en entornos de producción:

# Actualizar latest solo con versiones estables
docker tag miusuario/mi-app:1.5.0 miusuario/mi-app:latest
docker push miusuario/mi-app:latest
docker push miusuario/mi-app:1.5.0

Recomendaciones para latest:

  • Solo versiones estables: Evitar versiones beta o development
  • Actualización consciente: No automática con cada build
  • Documentación clara: Especificar qué versión representa latest

Versionado incremental

Un patrón de versionado coherente facilita la adopción y el mantenimiento:

# Patrón recomendado para releases
docker push miusuario/mi-app:2.1.0    # Versión específica
docker push miusuario/mi-app:2.1      # Versión minor
docker push miusuario/mi-app:2        # Versión major

Verificación y testing post-publicación

Después de publicar, es importante validar que la imagen funciona correctamente desde Docker Hub:

# Limpiar imágenes locales para testing real
docker rmi miusuario/mi-app:1.0.0

# Descargar y probar desde Docker Hub
docker run miusuario/mi-app:1.0.0

Validaciones recomendadas:

  • Descarga limpia: Probar desde un entorno sin la imagen local
  • Funcionalidad básica: Verificar que la aplicación arranca correctamente
  • Tamaño optimizado: Confirmar que no se han incluido archivos innecesarios
  • Metadatos correctos: Revisar etiquetas y descripciones en Docker Hub

Automatización y CI/CD

En entornos empresariales, la publicación automatizada forma parte del pipeline de desarrollo:

# Ejemplo de script de publicación automatizada
#!/bin/bash
VERSION=$(git describe --tags --always)

docker build -t miusuario/mi-app:${VERSION} .
docker tag miusuario/mi-app:${VERSION} miusuario/mi-app:latest

docker push miusuario/mi-app:${VERSION}
docker push miusuario/mi-app:latest

Esta automatización garantiza consistencia en las publicaciones y reduce errores manuales en el proceso de release.

Aprendizajes de esta lección de Docker

  • Comprender el proceso de autenticación en Docker Hub usando tokens de acceso.
  • Aplicar correctamente el sistema de etiquetado con namespace para organizar imágenes.
  • Publicar imágenes en Docker Hub y configurar la visibilidad de los repositorios.
  • Gestionar colaboradores y permisos en repositorios privados.
  • Implementar buenas prácticas de versionado y automatización en la publicación de imágenes.

Completa este curso de Docker y certifícate

Únete a nuestra plataforma de cursos de programación y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.

Asistente IA

Resuelve dudas al instante

Ejercicios

Practica con proyectos reales

Certificados

Valida tus conocimientos

Más de 25.000 desarrolladores ya se han certificado con CertiDevs

⭐⭐⭐⭐⭐
4.9/5 valoración