Changer le thème

Guide des mirrors Docker en Chine 2026 : résoudre les timeouts pull en 5 minutes

Easton editorial illustration: container packing dock

Mise à jour de juin 2026 : cet article a été recalibré selon la documentation officielle Docker sur les limites d’utilisation de Docker Hub et le pull-through cache. La recommandation actuelle n’est plus de compter sur un seul mirror public, mais d’identifier d’abord la couche réseau, puis de choisir entre mirror communautaire, proxy HTTP ou cache d’entreprise. Un changement facile à manquer : depuis le 1er avril 2025, Docker Hub applique des limites de débit (10/heure par IP sans authentification, 100/heure avec un compte gratuit) ; si l’échec est un 429 et non un timeout, faites d’abord docker login plutôt que de changer de mirror.

Vendredi à 15 h, je fixais le terminal où tournait docker pull nginx:latest. Le curseur clignotait depuis dix bonnes minutes, avant de me cracher un gros i/o timeout en rouge. Franchement, ce n’était pas la première fois. Depuis juin, ça s’intensifie — le réseau va bien, le navigateur est rapide, mais l’image Docker ne descend pas.

Après avoir parcouru les tutos en ligne, les mirrors Aliyun et NetEase recommandés ne changeaient rien. J’ai appris ensuite que le 6 juin 2024, les accélérateurs Docker en Chine ont presque tous disparu — Aliyun, Tencent Cloud, Baidu Cloud, plus les miroirs universitaires : arrêt de service ou accès réservé au réseau interne.

Vous connaissez peut-être ce sentiment : une pile de tutos 2023 « solution parfaite pour Docker lent », vous configurez daemon.json, redémarrez Docker, relancez docker pull plein d’espoir… et timeout encore. Vraiment décourageant.

La bonne nouvelle : il reste des mirrors maintenus par la communauté, testés et fonctionnels. Cet article liste ceux encore utilisables en décembre 2025, explique comment configurer daemon.json et comment dépanner. Sans détour, on y va.

Pourquoi les mirrors Docker ont-ils massivement cessé de fonctionner ?

Avant les solutions, il faut comprendre ce qui s’est passé. Votre mirror Aliyun qui marchait bien ne peut pas tomber en panne sans raison.

Le 6 juin 2024 a marqué un tournant. Ce jour-là, presque tous les services d’accélération Docker Hub en Chine ont annoncé arrêt ou restriction. Aliyun, NetEase, Tencent Cloud, Baidu Cloud — les géants — ont perdu leurs mirrors quasi du jour au lendemain. Les universités (Nanjing, Shanghai Jiao Tong, USTC) ont fermé leurs miroirs ou les ont limités au campus.

Honnêtement, j’étais surpris. Ces mirrors tournaient depuis des années, puis plus rien. Double pression : conformité d’un côté, coût d’exploitation d’un service haute disponibilité de l’autre.

Si vous visitez ces anciennes adresses aujourd’hui, c’est 404 ou timeout. Si daemon.json contient encore registry.cn-hangzhou.aliyuncs.com ou hub-mirror.c.163.com, c’est inutile.

Et Docker Hub en direct ? Techniquement possible, mais en Chine, c’est lent au point de douter. Quelques centaines de Mo, une demi-heure minimum ; timeout courant.

Mirrors encore disponibles en décembre 2025

Pas de panique : malgré la chute des mirrors des grands acteurs, la communauté maintient encore des accélérateurs gratuits. J’ai testé récemment ; voici la liste à fin décembre 2025.

Liste des mirrors disponibles

Nom du mirrorAdresseDescription
Xuanyuan Mirror (gratuit)https://docker.xuanyuan.meMaintenu par la communauté, gratuit, bonne réactivité
Xuanyuan Mirror (pro)https://xuanyuan.cloudConnexion requise, vitesse plus stable
DaoCloudhttps://docker.m.daocloud.ioMirror historique, relativement stable
1ms.runhttps://docker.1ms.runMaintenu par la communauté
1panelhttps://docker.1panel.liveMaintenu par la communauté
rat.devhttps://hub.rat.devMaintenu par la communauté
aigc2dhttps://docker-mirror.aigc2d.comMaintenu par la communauté

Recommandation : Xuanyuan et DaoCloud m’ont paru les plus stables. La version gratuite docker.xuanyuan.me est déjà rapide ; pour plus de stabilité, essayez la version pro.

Quelques rappels

  1. Services maintenus à frais propres par la communauté. Contrairement à Aliyun ou Tencent Cloud, ils peuvent s’arrêter à tout moment. Utilisez-les avec modération.

  2. Toutes les images ne sont pas accélérées. Certains mirrors ne couvrent que les images de base (nginx, mysql, redis) ou appliquent une liste blanche. Timeout sur une image rare ? Ce n’est pas forcément le mirror — essayez un autre ou Docker Hub direct.

  3. Configurez plusieurs mirrors. daemon.json accepte plusieurs registry-mirrors ; Docker essaie dans l’ordre. Si le premier échoue, fallback automatique vers le suivant.

Ces adresses viennent du dépôt GitHub dongyubin/DockerHub, mis à jour régulièrement — je recommande de le mettre en favori.

Configurer daemon.json pas à pas

Avec les adresses en main, la configuration : un fichier JSON et un redémarrage Docker. Voici les trois systèmes principaux.

Linux (le plus courant)

La plupart des serveurs et postes de dev tournent sous Linux — c’est le cas le plus important.

1. Créer ou éditer le fichier de config

Emplacement : /etc/docker/daemon.json (créez-le s’il n’existe pas)

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

2. Écrire la configuration

Copiez ce JSON — j’ai mis trois mirrors en secours :

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

Enregistrez et quittez (vi : ESC, puis :wq).

3. Redémarrer Docker

sudo systemctl daemon-reload
sudo systemctl restart docker

La première commande recharge systemd, la seconde redémarre Docker. Les deux sont obligatoires pour appliquer la config.

macOS (Docker Desktop)

Sur Mac, Docker Desktop propose une interface graphique, plus simple.

1. Ouvrir les paramètres Docker Desktop

Cliquez sur l’icône Docker dans la barre de menus → Settings (ou Preferences)

2. Trouver Docker Engine

Menu de gauche : Docker Engine — un éditeur JSON s’affiche.

3. Modifier le JSON

Ajoutez le champ registry-mirrors (si d’autres options existent, pensez à la virgule) :

{
  "registry-mirrors": [
    "https://docker.xuanyuan.me",
    "https://docker.m.daocloud.io"
  ],
  "autres configs existantes": "inchangées"
}

4. Appliquer et redémarrer

Cliquez Apply & Restart en bas à droite ; Docker redémarre et applique la config.

Windows (Docker Desktop)

Quasi identique à macOS, via Docker Desktop.

1. Ouvrir les paramètres

Clic droit sur l’icône Docker dans la barre des tâches → Settings

2. Aller dans Docker Engine

Menu de gauche : Docker Engine

3. Modifier le JSON

Ajoutez registry-mirrors, même contenu que sur macOS.

4. Appliquer et redémarrer

Cliquez Apply & Restart et attendez la fin du redémarrage.

Points d’attention

  • JSON valide. Erreur la plus fréquente : virgule en trop ou manquante — utilisez un validateur JSON.
  • Retirez les mirrors obsolètes. Aliyun, NetEase dans daemon.json ? Supprimez-les, ils ne servent plus.
  • Plusieurs secours. Un seul mirror peut être instable ; 2 à 3 adresses améliorent le taux de succès.

Vérifier que la configuration est active

Avant de tirer des images, vérifiez que la config est bien prise en compte.

Méthode 1 : commande docker info

Le plus rapide : docker info, puis la ligne Registry Mirrors.

docker info | grep -A 5 "Registry Mirrors"

Si tout va bien, vous devriez voir :

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

Vos adresses apparaissent ? La config est active. Sinon, vérifiez le JSON et le redémarrage de Docker.

Méthode 2 : pull réel

La config affichée ne suffit pas — tirez une image pour juger la vitesse.

docker pull nginx:latest

nginx est une image de base présente sur presque tous les mirrors.

En cas de succès, la barre de progression avance vite — quelques dizaines de secondes pour ~100 Mo. Loin des dix minutes de timeout.

Mon test récent avec Xuanyuan : nginx de 0 à 100 % en moins de 30 secondes — plutôt convaincant.

Et si c’est encore lent ?

Ne paniquez pas — consultez la section dépannage ci-dessous.

Dépannage courant

Même avec une config correcte, des problèmes bizarres arrivent. Voici les pièges que j’ai rencontrés.

Problème 1 : docker info ne montre pas les mirrors

Symptôme : docker info | grep "Registry Mirrors" ne renvoie rien ou une liste vide.

Causes et solutions :

  1. Format daemon.json incorrect — la plus fréquente. JSON strict : une virgule ou un guillemet en trop suffit.

    • Solution : validez avec JSONLint.
    • Erreurs courantes : virgule après le dernier élément du tableau, accolade non fermée.
  2. Docker non redémarré — modifier le fichier ne suffit pas.

    • Solution : Linux sudo systemctl restart docker ; Docker Desktop → Apply & Restart.
  3. Permissions du fichier — Docker ne peut pas lire daemon.json.

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

Problème 2 : timeout malgré la config

Symptôme : docker info affiche les mirrors, mais docker pull time out encore.

Causes et solutions :

  1. Image hors liste blanche — tous les mirrors n’accélèrent pas tout.

    • Solution : testez nginx, redis ; s’ils passent, la config est OK — changez de mirror ou utilisez un proxy.
  2. Mirror temporairement indisponible — charge ou maintenance.

    • Solution : plusieurs mirrors dans daemon.json pour le fallback ; réessayez plus tard.
  3. Réseau local — pare-feu, proxy, DNS.

    • Solution : ping docker.xuanyuan.me, vérifiez le pare-feu.

Problème 3 : échec au redémarrage de Docker

Symptôme : systemctl restart docker échoue, Docker ne démarre plus.

Causes et solutions :

  1. daemon.json invalide bloque le démarrage
    • Solution : logs journalctl -u docker.service
    • Urgence : renommez ou supprimez daemon.json, redémarrez, puis corrigez la config.
sudo mv /etc/docker/daemon.json /etc/docker/daemon.json.bak
sudo systemctl restart docker

Problème 4 : certaines images spéciales ne passent pas

Symptôme : nginx et redis OK, mais images privées ou d’un registry particulier en échec.

Solution :

  • L’accélérateur ne couvre que les images publiques Docker Hub. Pour gcr.io, quay.io ou un registry privé, il ne sert à rien.
  • Options :
    1. Proxy HTTP dans daemon.json : http-proxy et https-proxy
    2. VPN ou service proxy
    3. Sites communautaires qui republient des images gcr.io en Chine

Alternatives si rien ne marche

  1. Proxy Docker — HTTP proxy dans daemon.json pour sortir via proxy.
  2. Registry privé local — Harbor ou équivalent, synchronisation manuelle des images nécessaires.
  3. Changer d’horaire — parfois c’est le pic réseau ; réessayez plus tard.

Restez calme, isolez l’étape en cause, dépannez pas à pas — on finit toujours par trouver.

Conclusion

Voici l’essentiel :

Points clés :

  • Après le 6 juin 2024, Aliyun, NetEase, Tencent Cloud et les mirrors majeurs sont hors jeu
  • Il reste surtout des mirrors communautaires : Xuanyuan, DaoCloud, etc.
  • Modifiez daemon.json, ajoutez registry-mirrors, redémarrez Docker
  • Configurez plusieurs mirrors en secours
  • En cas de souci : JSON, état du service Docker, réseau

Ces mirrors communautaires sont moins stables que ceux des géants, mais ils débloquent la situation. Je ne sais pas combien de temps ils tiendront — gardez le dépôt GitHub (dongyubin/DockerHub) sous la main.

Si cet article vous a aidé, partagez-le. Questions en commentaire — je répondrai.

Dernier mot : ces ressources gratuites sont maintenues à frais propres — ne les abusez pas. Personne n’a la vie facile.

Tableau de décision disponibilité 2026

ScénarioSolution privilégiéeAlternativeCritère de validation
Timeout occasionnel en dev personnel2-3 registry-mirrors communautairesProxy HTTP/HTTPS pour le daemon Dockerdocker pull nginx:latest se termine de façon stable
Pulls fréquents en CI/CDPull-through cache privé ou HarborImages de base en cache dans l’artifact storeNe pas dépendre de mirrors publics changeants
Réseau d’entreprise / proxy transparentVérifier proxy, certificats et DNS d’abordPuis registry mirrorLe navigateur OK ≠ le daemon Docker OK
Image rare ou registry privéAccès direct + proxySync manuelle vers registry privéMirror public = Docker Hub public uniquement

Pour aller plus loin : rendre le problème observable

Processus de dépannage des mirrors Docker en 2026

Identifiez d'abord la couche réseau, puis choisissez registry mirror, proxy ou cache privé.

⏱️ Estimated time: 5 min

  1. 1

    Step 1: Confirmer le réseau réel du daemon Docker

    Utilisez docker pull, docker info et systemctl status docker pour déterminer si le problème vient du daemon Docker, et non du proxy du navigateur ou du terminal.
  2. 2

    Step 2: Configurer mirror ou proxy

    Sur un poste de dev personnel, configurez plusieurs registry-mirrors ; en réseau d'entreprise, donnez la priorité à un proxy HTTP/HTTPS pour le daemon Docker ou à un pull-through cache auto-hébergé.
  3. 3

    Step 3: Valider avec de vraies images

    Testez avec des images publiques comme nginx ou redis, puis validez avec vos images métier ; si une image peu courante échoue, ne concluez pas trop vite que tous les mirrors sont hors service.

FAQ

Comment choisir un mirror Docker en 2026 ?
Commencez par le scénario : en dev personnel, configurez plusieurs registry-mirrors communautaires ; en CI/CD et en entreprise, privilégiez un pull-through cache privé, Harbor ou un proxy pour le daemon Docker. Ne considérez aucun mirror public comme un SLA à long terme.
Configurer plusieurs registry-mirrors dans daemon.json, est-ce utile ?
Oui, mais cela ne résout que le taux de succès des pulls d'images publiques Docker Hub. Cela n'accélère pas gcr.io, quay.io ou un registry privé, et ne contourne pas les problèmes de certificats ou de proxy transparent d'entreprise.
Quand faut-il auto-héberger un pull-through cache ?
Quand l'équipe tire fréquemment les mêmes images de base en CI, ou ne veut pas dépendre de mirrors communautaires publics. La documentation officielle Docker recommande aussi registry mirror / pull-through cache pour réduire les pulls répétés.
Toujours en timeout après configuration, comment dépanner ?
Vérifiez dans l'ordre : format JSON, redémarrage de Docker, proxy du daemon, DNS, certificats, et si l'image appartient bien aux images publiques Docker Hub. Ne remplacez le mirror qu'en dernier recours — pas dès le départ.
J'ai configuré un mirror mais j'ai toujours une limite de débit ou un 429, que faire ?
Vérifiez d'abord si l'échec est un timeout ou un 429. Depuis le 1er avril 2025, Docker Hub applique des limites de débit : 10 pulls/heure par IP sans authentification, 100 pulls/heure pour un compte Personal gratuit authentifié, et illimité pour les comptes payants Pro/Team/Business en usage raisonnable. Un 429 est indépendant d'un mirror chinois hors service, et changer de mirror ne le contourne pas toujours. La vraie solution est de faire docker login avec un compte gratuit pour passer à 100/heure. C'est surtout sensible en CI : les runners GitHub Actions et GitLab SaaS partagent une IP de sortie, donc la limite de 10/heure est partagée par tous sur cette IP.

9 min de lecture · Publié le: 17 déc. 2025 · Mis à jour le: 27 juil. 2026

Commentaires

Connectez-vous avec GitHub pour laisser un commentaire

Easton BlogEaston Blog