Las imágenes son el punto de partida de todo lo que hacemos con Docker: cada contenedor nace de una imagen. Pero ¿de dónde salen esas imágenes? La respuesta es un registro (registry), un servicio que almacena y distribuye imágenes. El registro más conocido y usado por defecto es Docker Hub. En esta lección aprenderemos qué es Docker Hub, cómo distinguir las imágenes oficiales de las de la comunidad, cómo buscar y descargar imágenes con docker search y docker pull, la diferencia entre repositorios públicos y privados, qué papel juegan los tags y qué alternativas existen a Docker Hub. Entender el ecosistema de registros es esencial antes de aprender a construir nuestras propias imágenes.

¿Qué es un Registro y qué es Docker Hub?

Conviene separar tres conceptos que los principiantes suelen mezclar:

  • Registro (registry): el servicio completo que aloja imágenes. Docker Hub es un registro, pero hay muchos más.
  • Repositorio (repository): dentro de un registro, una colección de imágenes que comparten nombre pero se diferencian por su tag. Por ejemplo, el repositorio nginx contiene nginx:1.25, nginx:alpine, nginx:latest, etc.
  • Imagen: una versión concreta dentro de un repositorio, identificada por su tag o por su digest.

Docker Hub es el registro público por defecto de Docker. Cuando ejecutas un comando como docker pull nginx sin especificar ningún registro, Docker asume Docker Hub automáticamente. Ofrece:

  • Miles de imágenes listas para usar (bases de datos, lenguajes, servidores web, etc.).
  • Repositorios públicos gratuitos y repositorios privados (con límites según el plan).
  • Una interfaz web en https://hub.docker.com para buscar, leer documentación y ver tags disponibles.

Imágenes Oficiales vs Imágenes de la Comunidad

No todas las imágenes de Docker Hub tienen la misma garantía de calidad. Es fundamental saber distinguirlas.

Característica Imágenes oficiales Imágenes de la comunidad
Quién las mantiene Equipo de Docker junto con los proyectos originales Cualquier usuario u organización
Nombre en el pull nginx, postgres, python (sin barra) usuario/imagen o organizacion/imagen
Revisión de seguridad Curadas y auditadas Variable; depende del autor
Documentación Estandarizada y completa Variable
Confianza recomendada Alta Verifícala antes de usar
  • Una imagen oficial se referencia con un único nombre sin barra: ubuntu, redis, node. Internamente Docker las trata como pertenecientes al espacio library/, por eso ubuntu equivale a library/ubuntu.
  • Una imagen de la comunidad siempre incluye el nombre del usuario u organización seguido de una barra: bitnami/postgresql, miempresa/api-pagos.

Regla práctica para principiantes: cuando exista una imagen oficial para lo que necesitas (un lenguaje, una base de datos), empieza por ella. Recurre a imágenes de la comunidad solo cuando aporten algo concreto, y revisa siempre quién las publica.

Buscar Imágenes con docker search

El comando docker search consulta Docker Hub desde la terminal, sin necesidad de abrir el navegador.

docker search nginx

La salida muestra varias columnas:

NAME                 DESCRIPTION                      STARS   OFFICIAL
nginx                Official build of Nginx.         19000   [OK]
bitnami/nginx        Bitnami nginx Docker Image       150
linuxserver/nginx    An Nginx container...            180

Explicación de cada columna:

  • NAME: el nombre del repositorio. Si no lleva barra, es oficial.
  • DESCRIPTION: una breve descripción del propósito de la imagen.
  • STARS: número de "estrellas" que le han dado los usuarios; sirve como indicador de popularidad.
  • OFFICIAL: muestra [OK] si se trata de una imagen oficial.

Puedes filtrar y limitar los resultados:

docker search --filter is-official=true --limit 5 nginx
  • --filter is-official=true: muestra solo imágenes oficiales.
  • --limit 5: limita la salida a los 5 primeros resultados.

Nota: docker search no muestra los tags disponibles. Para ver las versiones concretas de un repositorio, consulta su página en hub.docker.com o usa la API del registro.

Descargar Imágenes con docker pull

Una vez identificada la imagen, docker pull la descarga a tu máquina local.

docker pull nginx
  • Sin tag, Docker descarga el tag por defecto, que es latest. Es decir, nginx equivale a nginx:latest.
  • La imagen queda almacenada localmente y podrás usarla para crear contenedores sin volver a descargarla.

Para descargar una versión concreta, indica el tag tras dos puntos:

docker pull nginx:1.25-alpine
  • nginx: el repositorio.
  • 1.25-alpine: el tag, que aquí indica la versión 1.25 basada en Alpine Linux.

Durante la descarga verás cómo Docker baja varias capas por separado:

1.25-alpine: Pulling from library/nginx
a2abf6c4d29d: Pull complete
e3b6889c8954: Pull complete
Digest: sha256:7e2c6...
Status: Downloaded newer image for nginx:1.25-alpine
  • Cada Pull complete corresponde a una capa de la imagen. Docker descarga las capas en paralelo y reutiliza las que ya tenga en local.
  • El Digest (sha256:...) es un identificador único y exacto del contenido de la imagen. A diferencia de un tag, que puede reasignarse, el digest siempre apunta al mismo contenido. Puedes usarlo para descargar una imagen de forma inmutable:
docker pull nginx@sha256:7e2c6...

Repositorios Públicos y Privados

Un repositorio en Docker Hub puede ser público o privado:

Tipo Quién puede descargarlo Caso de uso típico
Público Cualquiera, sin autenticarse Software de código abierto, imágenes compartidas
Privado Solo usuarios autorizados tras docker login Imágenes internas de una empresa

Para descargar de un repositorio privado primero hay que autenticarse:

docker login
  • Te pedirá tu usuario y contraseña (o un token de acceso) de Docker Hub.
  • Tras iniciar sesión, ya puedes hacer pull de tus repositorios privados:
docker pull miusuario/app-interna:1.0
  • miusuario: el espacio de nombres (tu cuenta u organización).
  • app-interna: el repositorio privado.
  • 1.0: el tag concreto.

Buena práctica de seguridad: en lugar de tu contraseña, usa un token de acceso personal generado en la configuración de Docker Hub. Puedes revocarlo en cualquier momento sin cambiar tu contraseña principal, y es lo recomendado en entornos automatizados como pipelines de integración continua.

Tags en el Registro

Un tag es una etiqueta legible que identifica una versión dentro de un repositorio. Es lo que escribes después de los dos puntos: repositorio:tag.

Ejemplo de referencia Significado
redis Repositorio redis, tag implícito latest
redis:7.2 Versión 7.2
redis:7.2-alpine Versión 7.2 sobre Alpine Linux
redis:latest El tag marcado como "último" por el mantenedor

Puntos clave que debes entender sobre los tags:

  • latest no significa "la versión más reciente garantizada": es simplemente el tag por defecto. Es el mantenedor quien decide a qué imagen apunta latest, y puede no estar actualizado. Por eso en producción conviene fijar versiones explícitas (redis:7.2) en lugar de confiar en latest.
  • Un tag es mutable: el mantenedor puede reasignar redis:7.2 a una imagen nueva. Si necesitas una garantía absoluta de inmutabilidad, usa el digest (@sha256:...).
  • Las variantes como -alpine, -slim o -bookworm indican el sistema base sobre el que se construyó la imagen, lo que afecta a su tamaño y compatibilidad.

Alternativas a Docker Hub

Docker Hub no es el único registro. En entornos profesionales es muy común usar otros, ya sea por integración con la nube, por privacidad o por evitar los límites de descarga de Docker Hub.

Registro Proveedor Caso de uso habitual
Docker Hub Docker Imágenes públicas y registro por defecto
Amazon ECR AWS Proyectos alojados en AWS
Google Artifact Registry Google Cloud Proyectos en Google Cloud
Azure Container Registry Microsoft Azure Proyectos en Azure
GitHub Container Registry (ghcr.io) GitHub Imágenes vinculadas a repositorios de GitHub
Harbor Código abierto (autohospedado) Registro privado bajo tu control

Para usar un registro distinto de Docker Hub, basta con incluir su dominio al principio de la referencia de la imagen:

docker pull ghcr.io/miorganizacion/miservicio:2.1
  • ghcr.io: el dominio del registro (GitHub Container Registry).
  • miorganizacion/miservicio: el repositorio dentro de ese registro.
  • 2.1: el tag.

Cuando no se indica ningún dominio, Docker asume docker.io (Docker Hub) de forma implícita.

Errores Comunes y Consejos

  • Confundir registro, repositorio e imagen: el registro es el servidor, el repositorio es la colección de versiones y la imagen es una versión concreta.
  • Confiar ciegamente en latest: en producción fija siempre una versión explícita para builds reproducibles.
  • Usar imágenes de la comunidad sin verificarlas: revisa el autor, las estrellas, la fecha de actualización y la documentación antes de confiar en una imagen ajena.
  • No autenticarse antes de un pull privado: si olvidas docker login, Docker devolverá un error de acceso denegado o "repositorio no encontrado".
  • Esperar que docker search liste tags: no lo hace; consulta la web del registro para ver las versiones disponibles.
  • Consejo: para garantizar inmutabilidad total (por ejemplo, en despliegues críticos), referencia la imagen por su digest @sha256:... en lugar de por tag.

Ejercicios

Ejercicio 1

Busca la imagen oficial de PostgreSQL en Docker Hub desde la terminal, mostrando solo imágenes oficiales y un máximo de 3 resultados.

Ejercicio 2

Descarga la versión 16 de PostgreSQL basada en Alpine. Indica qué partes de la referencia son el repositorio y cuál el tag.

Ejercicio 3

Explica la diferencia entre descargar redis:7.2 y redis@sha256:abc123..., y en qué situación usarías cada una.

Soluciones

Solución 1

docker search --filter is-official=true --limit 3 postgres

La opción --filter is-official=true restringe la búsqueda a imágenes oficiales y --limit 3 muestra como máximo tres resultados. La imagen oficial aparecerá con [OK] en la columna OFFICIAL.

Solución 2

docker pull postgres:16-alpine
  • postgres es el repositorio (imagen oficial, sin barra).
  • 16-alpine es el tag: versión 16 construida sobre Alpine Linux, una base mínima que reduce el tamaño de la imagen.

Solución 3

  • redis:7.2 usa un tag, que es mutable: el mantenedor podría reasignarlo a otra imagen en el futuro. Es cómodo y legible para uso habitual.
  • redis@sha256:abc123... usa un digest, que es inmutable: siempre apunta exactamente al mismo contenido. Se usa cuando necesitas reproducibilidad absoluta, por ejemplo en despliegues de producción auditables o firmados.

Conclusión

En esta lección hemos explorado el ecosistema de registros de Docker: qué es Docker Hub, cómo se diferencian las imágenes oficiales de las de la comunidad, cómo buscar con docker search y descargar con docker pull, la distinción entre repositorios públicos y privados, el papel de los tags y el digest, y las principales alternativas a Docker Hub. Con esto ya sabes localizar y traer a tu máquina cualquier imagen que necesites.

En la siguiente lección, Construyendo Imágenes Docker, daremos el salto de consumir imágenes ajenas a crear las nuestras propias: veremos el comando docker build, el contexto de construcción, su relación con el Dockerfile y cómo aprovechar la caché de capas para builds rápidas.

© Copyright 2026. Todos los derechos reservados