Docker-Registry-Cache
Qué cubre este artículo sobre cachés de Docker Registry
- Qué es un Pull-Through-Cache.
- Cómo construir un espejo local de Registry.
- Configuración para Docker Engine y BuildKit.
- Ventajas y limitaciones.
- Consejos para la operación.
Introducción: Docker-Registry-Cache
Quien construye regularmente imágenes Docker o inicia muchos contenedores termina descargando las mismas imágenes una y otra vez. Un caché de Registry, también llamado Pull-Through-Cache o Registry-Mirror, almacena localmente las imágenes descargadas y las entrega cuando se necesitan nuevamente. Esto ahorra ancho de banda, acelera compilaciones y reduce la dependencia de registries externos como Docker Hub.
Este artículo muestra cómo configurar tu propio caché de Docker Registry.
Términos clave
- Pull-Through Cache: Proxy que obtiene y cachea imágenes bajo demanda.
- Registry-Mirror: Fuente alternativa para Docker Hub.
- Docker Distribution: Implementación de referencia de Registry de Docker.
- BuildKit: Constructor moderno de Docker.
- Image-Cache: Imágenes almacenadas en caché localmente.
- Proxy-Mode: Registry actúa como proxy de paso.
- Bandwidth: Ancho de banda.
- Rate-Limit: Docker Hub limita las descargas.
Cuándo vale la pena un caché
- Muchas compilaciones en la misma máquina.
- Múltiples hosts Docker en la red.
- Conexión a Internet lenta o costosa.
- Evitar límites de velocidad de Docker Hub.
- CI/CD con compilaciones frecuentes.
Iniciar un caché de Registry simple
docker run -d -p 5000:5000 \
--name registry-cache \
-v /opt/registry-cache:/var/lib/registry \
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \
-e REGISTRY_PROXY_USERNAME=benutzer \
-e REGISTRY_PROXY_PASSWORD=passwort \
registry:2
Con autenticación en Docker Hub para evitar límites de velocidad.
Configurar Docker Engine
En /etc/docker/daemon.json:
{
"registry-mirrors": ["http://localhost:5000"]
}
Luego reinicia Docker:
sudo systemctl restart docker
BuildKit-Cache
BuildKit puede usar backends de caché separados para capas. Para un caché de Registry de imágenes:
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB"
}
},
"registry-mirrors": ["http://localhost:5000"]
}
En Compose
services:
cache:
image: registry:2
ports:
- "5000:5000"
environment:
REGISTRY_PROXY_REMOTEURL: https://registry-1.docker.io
REGISTRY_PROXY_USERNAME: benutzer
REGISTRY_PROXY_PASSWORD: passwort
volumes:
- registry-cache:/var/lib/registry
volumes:
registry-cache:
Múltiples hosts en la red
Otros hosts usan Registry como espejo:
{
"registry-mirrors": ["http://cache-server:5000"]
}
Lo más seguro es HTTPS con certificado propio.
Verificar el caché
curl http://localhost:5000/v2/_catalog
Limitar el tamaño del caché
Docker Registry no tiene límite de tamaño integrado. Debes limpiar regularmente:
docker exec registry-cache bin/registry garbage-collect /etc/docker/registry/config.yml
O limitar volúmenes.
Ventajas
- Descargas más rápidas.
- Menos ancho de banda.
- Independencia de Docker Hub.
- Tiempos de CI/CD mejores.
- Reducción de límites de velocidad.
Limitaciones
- Solo imágenes públicas o con tus propias credenciales.
- No es un reemplazo para una Registry privada.
- Cachea capas, no caché de compilación directo.
- El almacenamiento crece, requiere mantenimiento.
Consejos
- TLS para uso externo.
- Limpieza regular.
- Guardar credenciales de Docker Hub.
- Monitorear la tasa de aciertos del caché.
- Hacer backup del volumen.
Problemas comunes
- El caché no se utiliza:
registry-mirrorsno está endaemon.json. - La autenticación falla: Credenciales de Docker Hub incorrectas.
- Se agota el espacio: Sin trabajos de limpieza.
- Falta HTTPS: Comunicación insegura.
- Caché obsoleto: Sin invalidación.
- Firewall: Puerto 5000 no abierto.
Enlaces e información adicional
- BotServ.de Docker Registry
- BotServ.de Optimización de imágenes Docker
- BotServ.de Docker Layer-Caching
- BotServ.de Comandos Docker
FAQ: Docker-Registry-Cache
¿Cuál es la diferencia entre Registry y Cache? Una Registry almacena tus propias imágenes, un Pull-Through-Cache obtiene imágenes externas y las almacena localmente.
¿Puedo reemplazar Docker Hub completamente? No, pero puedes cachear imágenes y evitar límites de velocidad.
¿Necesito iniciar sesión en Docker Hub? Sí, para imágenes privadas y límites más altos.
¿Funciona también con BuildKit?
Sí, registry-mirrors se usa durante el Pull.
¿Debo usar TLS? Siempre, si el caché es accesible desde la red.
Fuentes y lecturas adicionales
- Docker Registry as pull-through cache: https://docs.docker.com/docker-hub/mirror/
- Docker Registry: https://distribution.github.io/distribution/
- BuildKit: https://docs.docker.com/build/buildkit/
Resumen: Docker-Registry-Cache
Un caché de Docker Registry reduce descargas, ahorra ancho de banda y acelera compilaciones. Se configura como proxy Pull-Through y se registra en Docker Engine como registry-mirror. Para tu propia infraestructura o CI/CD vale rápidamente la pena. Lo importante es la autenticación, TLS para acceso externo y mantenimiento regular para que el almacenamiento no crezca sin límite.


