Skip to content
BotServBotServ
DockerRegistryCachePull-ThroughMirror

Cache de Registro Docker

Ejecuta un caché pull-through local para Docker Hub. Ahorra ancho de banda, acelera builds y almacena imágenes.

S

schutzgeist

3 min read
Cache de Registro Docker

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-mirrors no está en daemon.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

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

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.

Volver al blog
Share:

Entradas relacionadas