Un registry es el sistema que almacena y distribuye imágenes y otros artefactos compatibles con OCI. No guarda una imagen como un único archivo llamado ; organiza repositories, manifests, índices, configs y blobs direccionados por contenido.
api:1.4.0
Texto
registry.example.com/team/api:1.4.0
│
├── registry: registry.example.com
├── namespace: team
├── repository: api
└── tag: 1.4.0
↓
manifest o image index
↓
config + layer blobs
El registry forma parte de la cadena de suministro. Si no está disponible, no es confiable o permite sobrescribir artefactos sin control, la reproducibilidad del despliegue queda comprometida.
Una imagen construida únicamente en un laptop no puede utilizarse de forma controlada por CI, staging y producción. Copiar manualmente tarballs genera varios problemas:
no existe una referencia central;
es difícil saber quién publicó el artefacto;
cada host puede tener una copia diferente;
no hay una política clara de autenticación o retención;
se pierde la relación entre commit, versión y digest;
el rollback depende de archivos conservados manualmente.
El registry proporciona un punto de distribución común:
Texto
CI construye
→ publica blobs y manifest
→ staging hace pull
→ valida el digest
→ producción utiliza el mismo artefacto
La idea importante es construir una vez y promover el mismo contenido. Si cada ambiente reconstruye desde source, puede obtener dependencias, timestamps, bases o paquetes diferentes.
Por diseño, un tag puede moverse y apuntar a otro manifest. Algunos registries permiten configurar tags inmutables, pero no debes asumirlo sin verificar la política.
docker tag my-api:build-481 registry.example.com/team/api:1.4.0
docker push registry.example.com/team/api:1.4.0
El primer comando no duplica necesariamente los datos. Añade una nueva referencia local al mismo contenido.
Durante el push, de forma simplificada:
El cliente autentica contra el registry.
Consulta qué blobs ya existen.
Sube únicamente las capas y configs faltantes.
Publica el manifest que referencia esos blobs.
Asocia el tag con el manifest.
Recibe o puede consultar el digest resultante.
El manifest debe publicarse al final. Si una capa falla antes, el tag no debería apuntar a un artefacto incompleto, aunque pueden quedar blobs sin referencia que una política posterior limpie.
Si existe un índice, selecciona la plataforma compatible.
Obtiene la config.
Compara digests de layers con el contenido local.
Descarga únicamente blobs faltantes.
Verifica integridad.
registra la referencia en el image store local.
Hacer pull por tag no significa que Docker consulte el registry cada vez que ejecutas docker run. Si la referencia existe localmente, puede utilizar esa copia según la herramienta y política de pull aplicada.
Para promover una publicación multi-platform, normalmente interesa conservar el digest del índice. Para investigar qué ejecutó un host concreto, también importa el digest del manifest de su plataforma.
Promover no siempre requiere descargar y volver a subir todas las capas. Algunos registries permiten copiar manifests o añadir tags dentro del servidor.
Conceptualmente:
Texto
api:candidate → sha256:A
api:stable → sha256:A
La nueva referencia humana apunta al mismo contenido.
Aun así, el deployment debe registrar sha256:A. Si mañana stable se mueve, puedes demostrar qué versión se ejecutó.
Un pipeline que solo hace pull no necesita permiso de push. Un repositorio de producción puede aceptar publicaciones únicamente desde un workflow protegido.
Permisos excesivos aumentan el impacto de una credencial robada:
Texto
token comprometido
+ permiso de sobrescribir tags de producción
→ sustitución de artefactos
Puede iniciar un contenedor sin contactar nuevamente al registry, siempre que el contenido y referencia local estén disponibles y la política no fuerce pull.
Los registries acumulan manifests, tags y blobs. Una política debe distinguir:
tags activos;
digests desplegados;
candidatos de rollback;
artefactos de ramas temporales;
imágenes sin referencia;
attestations y SBOM asociados.
Eliminar un tag puede no borrar inmediatamente los blobs. El garbage collector solo puede eliminar contenido que ya no esté referenciado según el modelo del registry.
Si borras el digest anterior justo después de desplegar, pierdes un rollback rápido. También puedes dejar una deployment definition que referencia un artefacto inexistente.
Pueden venir de CA corporativa, hostname incorrecto, proxy o certificado expirado. No marques el registry como insecure sin analizar el modelo de amenaza.
El tag multi-platform puede cambiar mientras se añaden arquitecturas. Diseña publicación atómica del índice final o evita desplegar durante una ventana inconsistente.
Los digests permiten detectar identidad, pero los tags pueden resolver diferente durante sincronización. Para artefactos críticos usa referencias inmutables.