Si has investigado sobre Docker, habrás escuchado los términos Docker repository y Docker registry y puede que te hayas preguntado qué significan. En esta guía explicamos la diferencia entre ambos y cómo utilizarlos de forma efectiva.
Un repository Docker es una colección de imágenes Docker relacionadas que comparten el mismo nombre pero tienen versiones diferentes, identificadas por tags. Por ejemplo, el repository oficial nginx contiene imágenes etiquetadas como nginx:1.27, nginx:latest, nginx:alpine y así sucesivamente — todas versiones o variantes diferentes del mismo software.
Un registry Docker, por otro lado, es el servicio que aloja y gestiona los repositories. Piensa en el registry como el servidor y en el repository como una carpeta dentro de él.
Cada vez que el desarrollador lanza una nueva versión, crea una nueva imagen Docker con el mismo nombre pero un tag diferente y la sube al mismo repository en el registry.
Para asignar un tag de versión a una imagen Docker en el momento de la build, utiliza el flag -t:
$ docker build -t my-app:1.0.0 .
Alternativamente, puedes etiquetar una imagen existente usando el comando docker tag:
$ docker tag <image_name> <image_name>:<tag>
¿Para qué sirve un Docker repository?
Un repository proporciona control de versiones para las imágenes de contenedores. Cada tag representa una versión específica, permitiendo a ti y a tu equipo descargar exactamente la versión que necesitáis.
Los repositories pueden alojarse en un registry remoto para hacer que las imágenes de tu aplicación estén disponibles para otros usuarios y entornos. Los usuarios con los permisos apropiados pueden descargar una copia de cualquier imagen del repository usando el comando docker pull:
$ docker pull <registry>/<repository>:<tag>
Repositories públicos y privados
Los repositories pueden ser públicos o privados. Los repositories públicos son accesibles para cualquiera sin autenticación. En Docker Hub hay miles de repositories públicos disponibles, incluyendo imágenes oficiales de software popular como Nginx, PostgreSQL, Redis y Node.js.
Para crear un repository privado, necesitas abrir una cuenta en un proveedor de registry y configurar el acceso para tus colaboradores. Los registries más comúnmente utilizados incluyen:
- Docker Hub: el registry predeterminado y la mayor biblioteca pública de imágenes
- Amazon ECR (Elastic Container Registry): integrado con los servicios de AWS
- GitHub Container Registry (ghcr.io): integrado con GitHub Actions y los repositorios de GitHub
- Google Artifact Registry: el sucesor del ahora retirado Google Container Registry
Autenticación en un registry
Cada registry tiene su propio sistema de autenticación. El método estándar es el comando docker login.
Para Docker Hub, el método de autenticación predeterminado es ahora un flujo basado en código de dispositivo vía web, que evita exponer las credenciales en el terminal:
$ docker login
Se mostrará un código de un solo uso y una URL. Abre la URL en tu navegador, introduce el código y autoriza el acceso.
Para otros registries o para entornos no interactivos (como pipelines CI/CD), utiliza --password-stdin para pasar las credenciales de forma segura:
$ echo $REGISTRY_TOKEN | docker login -u <username> --password-stdin registry.example.com
Nota: evita pasar contraseñas directamente como argumentos de línea de comandos (por ej. docker login -p <password>), ya que esto las expone en el historial de la shell y en los logs del sistema.
Una vez autenticado, puedes descargar y subir imágenes a cualquier repository al que tengas acceso.
Límites de frecuencia de Docker Hub
Si descargas imágenes de Docker Hub sin autenticarte, tus solicitudes están sujetas a límites de frecuencia: 10 pulls por hora para usuarios no autenticados y 100 pulls por hora para cuentas gratuitas autenticadas. Todos los planes de pago (Pro, Team, Business) incluyen pulls ilimitados. Para entornos de producción con múltiples nodos, se recomienda autenticarse en Docker Hub o usar un mirror del registry para evitar alcanzar estos límites.
Recursos útiles
Te recomendamos guardar en favoritos la documentación oficial de Docker – contiene una gran cantidad de recursos gratuitos para sysadmins y desarrolladores.
Repositories, registries y tu infraestructura
Esperamos que esta guía haya aclarado la diferencia entre un Docker repository y un Docker registry, y cómo aprovechar ambos.
Crear una cuenta en un Docker registry te permite compartir imágenes de aplicaciones con tu equipo de forma rápida y segura. Etiquetando cada versión, mantienes un historial de versiones claro que facilita el rollback y la retrocompatibilidad.
Los proveedores de nube como Google Cloud, Azure y AWS ofrecen todos registries de contenedores gestionados que se integran con sus servicios de orquestación (GKE, AKS, ECS). Para una visión más profunda sobre la orquestación, lee nuestros artículos sobre Docker vs Kubernetes y sobre cómo desplegar con Docker.
Si gestionas entornos contenedorizados, recuerda que una sólida estrategia de backup es esencial. Uranium Backup soporta el backup de máquinas virtuales, bases de datos y los datos que alimentan tus aplicaciones contenedorizadas.
Read related articles
Cómo llevar a cabo la implementación con Docker
Descubre cómo funciona Docker: desde crear imágenes con un Dockerfile hasta desplegar contenedores, gestionar apps multi-contenedor y escalar con orquestación.
Qué es Docker y cómo funciona esta valiosa herramienta
Qué es Docker y cómo funciona esta plataforma de containerización que ha cambiado la forma en que creamos, probamos y desplegamos aplicaciones.
Kubernetes Cloud: servicios en la nube para Kubernetes, mini guía práctica
Comparativa actualizada entre Amazon EKS, Google GKE y Azure AKS: costes, modos «No-Ops» y cuál elegir para entornos MSP.