Cambiar tema

Guía de mirrors de Docker en China 2026: resuelve pull timeout en 5 minutos

Easton editorial illustration: container packing dock

Actualización de junio de 2026: este artículo se ha recalibrado según la documentación oficial de Docker sobre límites de uso de Docker Hub y pull-through cache. La recomendación actual ya no es confiar en un solo mirror público, sino identificar primero la capa de red y luego elegir entre mirrors comunitarios, proxy HTTP o caché interna corporativa. Un cambio fácil de pasar por alto: desde el 1 de abril de 2025, Docker Hub aplica límites de descarga (10/hora por IP sin autenticar, 100/hora con cuenta gratuita); si el fallo es un 429 y no un timeout, haz primero docker login en lugar de cambiar de mirror.

El viernes pasado a las tres de la tarde miré el comando docker pull nginx:latest en la terminal: el cursor parpadeó diez minutos enteros y al final apareció un i/o timeout en rojo. La verdad, no era la primera vez. Desde junio de este año esto pasa cada vez más: la red parece bien, el navegador vuela, pero la imagen de Docker no baja.

Revisé tutoriales en línea y muchos recomendaban mirrors de Alibaba Cloud o NetEase; tras configurarlos seguían sin funcionar. Más tarde supe que el 6 de junio de 2024 casi todos los aceleradores de imágenes de Docker en China dejaron de servir: Alibaba, Tencent, Baidu y los mirrors universitarios o cerraron o quedaron solo para red interna.

¿Te ha pasado? Ves tutoriales de 2023 que prometen «solución perfecta para Docker lento», configuras daemon.json, reinicias Docker, vuelves a hacer docker pull con ilusión… y otra vez timeout. Frustrante.

La buena noticia: aún quedan mirrors mantenidos por la comunidad y, en mis pruebas, funcionan. En este artículo te cuento cuáles siguen activos en diciembre de 2025, cómo configurar daemon.json y cómo diagnosticar problemas. Sin rodeos: vamos al grano.

¿Por qué dejaron de funcionar tantos mirrors de Docker?

Antes de las soluciones, conviene entender qué pasó. No es que tu mirror de Alibaba Cloud dejara de ir «sin motivo».

El 6 de junio de 2024 fue un punto de inflexión. Ese día casi todos los servicios principales de aceleración de Docker Hub en China anunciaron cese o restricciones. Mirrors de Alibaba, NetEase, Tencent, Baidu y universidades como Nanjing, Shanghai Jiao Tong o USTC cerraron o pasaron a acceso solo en campus.

Cuando vi la noticia me sorprendió: llevábamos años usándolos y de golpe desaparecieron. Luego entendí que era mezcla de normativa y coste: cumplimiento y mantener un servicio de alta disponibilidad quema dinero.

Si hoy visitas esos mirrors antiguos, suele ser 404 o timeout. Si en daemon.json sigues con registry.cn-hangzhou.aliyuncs.com o hub-mirror.c.163.com, básicamente no sirven.

¿Y Docker Hub directo? Técnicamente sí, pero en la red china la velocidad puede hacerte dudar. Una imagen de cientos de MB puede tardar media hora; el timeout es habitual.

Mirrors que siguen funcionando en diciembre de 2025

Tranquilo: aunque cayeron los de las grandes empresas, hay servicios gratuitos mantenidos por la comunidad. Probé varios y armé esta lista vigente a diciembre de 2025.

Lista de mirrors disponibles

NombreDirecciónNotas
Xuanyuan Mirror (gratis)https://docker.xuanyuan.meComunidad, gratis, buena respuesta
Xuanyuan Mirror (pro)https://xuanyuan.cloudRequiere login, más estable
DaoCloudhttps://docker.m.daocloud.ioMirror veterano, relativamente estable
1ms.runhttps://docker.1ms.runMantenido por la comunidad
1panelhttps://docker.1panel.liveMantenido por la comunidad
rat.devhttps://hub.rat.devMantenido por la comunidad
aigc2dhttps://docker-mirror.aigc2d.comMantenido por la comunidad

Recomendación: en mi uso, Xuanyuan y DaoCloud son los más estables. La versión gratis docker.xuanyuan.me ya va rápido; si necesitas más estabilidad, prueba la versión pro.

Recordatorios de uso

  1. Son servicios mantenidos con recursos propios. Sin el respaldo de Alibaba o Tencent, pueden cerrar en cualquier momento. Úsalos con criterio, sin abusar.

  2. No aceleran todas las imágenes. Algunos solo ofrecen imágenes base (nginx, mysql, redis) o tienen lista blanca. Si una imagen rara hace timeout, prueba otro mirror o Docker Hub directo.

  3. Configura varios mirrors. daemon.json admite varios registry-mirrors; Docker los prueba en orden. Si el primero falla, pasa al siguiente.

Las direcciones las tomé del repositorio dongyubin/DockerHub en GitHub, que actualiza la lista de mirrors activos. Vale la pena guardarlo.

Configurar daemon.json paso a paso

Con las direcciones listas, toca configurar: un JSON y reiniciar Docker. Repaso los tres sistemas más habituales.

Linux (lo más común)

La mayoría de servidores y máquinas de desarrollo usan Linux.

1. Crear o editar el archivo de configuración

Ruta: /etc/docker/daemon.json (créalo si no existe)

sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json

2. Escribir la configuración

Copia este JSON; puse tres mirrors de respaldo:

{
  "registry-mirrors": [
    "https://docker.xuanyuan.me",
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run"
  ]
}

Guarda y sal (en vi: ESC, luego :wq y Enter).

3. Reiniciar Docker

sudo systemctl daemon-reload
sudo systemctl restart docker

El primero recarga systemd; el segundo reinicia Docker. Ambos son obligatorios para que aplique la configuración.

macOS (Docker Desktop)

En Mac, Docker Desktop ofrece interfaz gráfica.

1. Abrir ajustes de Docker Desktop

Icono de Docker en la barra de menú → Settings (o Preferences)

2. Ir a Docker Engine

En el menú izquierdo, Docker Engine; verás un editor JSON.

3. Modificar el JSON

Añade registry-mirrors (si ya hay otras claves, no olvides la coma):

{
  "registry-mirrors": [
    "https://docker.xuanyuan.me",
    "https://docker.m.daocloud.io"
  ],
  "otras configuraciones existentes": "sin cambios"
}

4. Aplicar y reiniciar

Pulsa Apply & Restart; Docker reinicia y aplica la config.

Windows (Docker Desktop)

En Windows es casi igual que en macOS.

1. Abrir ajustes

Clic derecho en el icono de Docker en la bandeja → Settings

2. Entrar en Docker Engine

Menú izquierdo → Docker Engine

3. Modificar el JSON

Igual: añade registry-mirrors con el mismo contenido que en macOS.

4. Aplicar y reiniciar

Apply & Restart y espera a que termine el reinicio.

Notas al configurar

  • JSON válido. El error más común es una coma de más o de menos; un validador JSON ayuda.
  • Quita mirrors muertos. Si aún tienes Alibaba o NetEase en daemon.json, elimínalos.
  • Varios de respaldo. Con 2-3 mirrors sube la probabilidad de éxito.

Verificar que la configuración funciona

No tires de docker pull aún: confirma que la config está activa.

Método 1: docker info

Lo más rápido:

docker info | grep -A 5 "Registry Mirrors"

Si todo va bien, verás algo así:

Registry Mirrors:
  https://docker.xuanyuan.me/
  https://docker.m.daocloud.io/
  https://docker.1ms.run/

¿Aparecen tus mirrors? Entonces está aplicado. Si no, revisa el JSON y que Docker se haya reiniciado.

Método 2: pull real

La prueba definitiva es descargar una imagen:

docker pull nginx:latest

nginx es imagen base casi universal; casi todos los mirrors la tienen.

Si funciona, verás la barra de progreso avanzar y en segundos terminar (~100 MB). Comparado con diez minutos de timeout, la diferencia se nota.

En mi prueba con Xuanyuan, nginx pasó de 0 a 100 % en menos de 30 segundos.

¿Sigue lento?

Si tras configurar sigue lento o timeout, no entres en pánico: mira la sección de problemas frecuentes más abajo.

Diagnóstico de problemas frecuentes

Aunque la config sea correcta, a veces aparecen fallos raros. Resumo los que más me han costado.

Problema 1: docker info no muestra mirrors

Síntoma: docker info | grep "Registry Mirrors" no devuelve nada o está vacío.

Causas y soluciones:

  1. JSON mal formado — lo más habitual. Un carácter de más rompe todo.

    • Usa JSONLint para validar daemon.json.
    • Errores típicos: coma tras el último elemento del array o llave sin cerrar.
  2. Docker no reiniciado — cambiar el archivo sin reiniciar no aplica.

    • Linux: sudo systemctl restart docker. Docker Desktop: Apply & Restart.
  3. Permisos del archivo — Docker no puede leer daemon.json.

    • sudo chmod 644 /etc/docker/daemon.json

Problema 2: sigue habiendo timeout

Síntoma: docker info muestra mirrors, pero docker pull sigue agotando tiempo.

Causas y soluciones:

  1. Imagen fuera de la lista blanca — no todo se acelera.

    • Prueba nginx o redis; si esos van, la config está bien. Cambia mirror o usa proxy para el resto.
  2. Mirror temporalmente caído — la comunidad puede saturarse o mantener.

    • Pon varios mirrors en daemon.json para fallback, o reintenta más tarde.
  3. Red local — firewall, proxy o DNS.

    • ping docker.xuanyuan.me y revisa reglas de firewall.

Problema 3: Docker no arranca tras reiniciar

Síntoma: systemctl restart docker falla y el servicio no levanta.

Causas y soluciones:

  1. daemon.json roto impide el arranque
    • Logs: journalctl -u docker.service
    • Emergencia: renombra o borra daemon.json, reinicia y corrige después.
sudo mv /etc/docker/daemon.json /etc/docker/daemon.json.bak
sudo systemctl restart docker

Problema 4: imágenes especiales no bajan

Síntoma: nginx y redis van, pero imágenes de proyecto o de otro registry no.

Solución:

  • Los aceleradores solo ayudan con imágenes públicas en Docker Hub. Para gcr.io, quay.io o registries privados:
    1. Proxy HTTP en daemon.json (http-proxy, https-proxy)
    2. VPN o servicio proxy
    3. Espejos comunitarios que replican gcr.io (donde existan)

Alternativas si nada funciona

  1. Proxy en Docker — HTTP en daemon.json para salir por proxy.
  2. Registry privado local — Harbor u otro; sincroniza manualmente lo que necesites.
  3. Probar en otro horario — a veces es pico de red.

Con calma: localiza en qué paso falla y avanza paso a paso.

Conclusión

Resumen rápido:

Puntos clave:

  • Tras el 6 de junio de 2024, mirrors de Alibaba, NetEase, Tencent y similares dejaron de servir en la práctica
  • Los que quedan suelen ser comunitarios: Xuanyuan, DaoCloud, etc.
  • Configura registry-mirrors en daemon.json y reinicia Docker
  • Usa varios mirrors de respaldo
  • Ante fallos: JSON, estado del servicio, red

No son tan estables como los de antes, pero salvan el día. No sé cuánto durarán; guarda el repo de GitHub (dongyubin/DockerHub) para listas actualizadas.

Si esto te ayudó con pulls lentos, compártelo con quien esté en la misma. Comenta si te atascas; respondo cuando pueda.

Último apunte: valora estos recursos gratuitos mantenidos por la comunidad; no los abuses.

Tabla de decisión de disponibilidad en 2026

EscenarioOpción preferidaAlternativaCriterio
Timeout ocasional en desarrollo personal2-3 registry-mirrors comunitariosProxy HTTP/HTTPS en el daemondocker pull nginx:latest estable
Pulls frecuentes en CI/CDpull-through cache privado o HarborCachear imágenes base en artefactosSin depender de mirrors públicos volátiles
Red corporativa / proxy transparenteConfirmar proxy, certificados y DNSLuego registry mirrorQue el navegador funcione no implica que el daemon funcione
Imagen rara o registry privadoRegistry destino + proxySincronizar a repo privadoMirror público solo para Docker Hub público

Lecturas relacionadas: hacer observable el problema de imágenes

Flujo de diagnóstico de mirrors de Docker en 2026

Primero identifica la capa de red; luego elige registry mirror, proxy o caché privada.

⏱️ Estimated time: 5 min

  1. 1

    Step 1: Confirmar la red real del daemon de Docker

    Usa docker pull, docker info y systemctl status docker para saber si el problema está en el daemon de Docker, no en el proxy del navegador o de la terminal.
  2. 2

    Step 2: Configurar mirror o proxy

    En una máquina de desarrollo personal puedes configurar varios registry-mirrors; en red corporativa interna prioriza proxy HTTP/HTTPS para el daemon o un pull-through cache propio.
  3. 3

    Step 3: Validar con imágenes reales

    Prueba con imágenes públicas como nginx o redis; luego verifica con imágenes de tu proyecto. Si falla una imagen poco usada, no asumas que todos los mirrors están caídos.

FAQ

¿Cómo elegir mirrors de Docker en 2026?
Elige según el escenario: en desarrollo personal puedes configurar varios registry-mirrors comunitarios; en CI/CD y red corporativa interna conviene más pull-through cache privado, Harbor o proxy del daemon. No trates ningún mirror público como un SLA a largo plazo.
¿Sirve configurar varios registry-mirrors en daemon.json?
Sí, pero solo mejora la tasa de éxito al descargar imágenes públicas de Docker Hub. No acelera gcr.io, quay.io ni registries privados, ni evita problemas de certificados o proxy transparente corporativo.
¿Cuándo conviene montar un pull-through cache propio?
Cuando el equipo descarga con alta frecuencia las mismas imágenes base en CI, o no quiere depender de mirrors comunitarios públicos. La documentación oficial de Docker también recomienda registry mirror/pull-through cache para reducir descargas repetidas.
Si sigue habiendo timeout tras configurar, ¿cómo diagnosticar?
Revisa en orden: formato JSON, reinicio de Docker, proxy del daemon, DNS, certificados y si la imagen es pública de Docker Hub. Cambia el mirror al final; no cambies direcciones a ciegas desde el principio.
Configuré un mirror pero sigo con límite de tasa o un 429, ¿qué hago?
Primero comprueba si el fallo es un timeout o un 429. Desde el 1 de abril de 2025, Docker Hub aplica límites de descarga: 10 pulls/hora por IP para usuarios sin autenticar, 100 pulls/hora para una cuenta Personal gratuita autenticada e ilimitado para planes de pago Pro/Team/Business con uso razonable. Un 429 es independiente de un mirror chino caído, y cambiar de mirror no siempre lo evita. La solución real es hacer docker login con una cuenta gratuita para subir el límite a 100/hora. En CI es lo más crítico: los runners de GitHub Actions y GitLab SaaS comparten una IP de salida, así que el límite de 10/hora se reparte entre todos los de esa IP.

9 min de lectura · Publicado el: 17 dic 2025 · Actualizado el: 21 ago 2026

Comentarios

Inicia sesión con GitHub para dejar un comentario

Easton BlogEaston Blog