Cómo funciona Repository Docker

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:

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