How to Fix Docker Pull Timeouts with Reliable Chinese Mirror Sources (2025 Update)
This guide explains why Docker pull commands often timeout in China due to outdated foreign registries, lists common invalid mirror configurations, provides three verified mirror URLs for 2025, and walks through editing the daemon.json file, restarting Docker, and testing the setup, while sharing practical troubleshooting lessons.
Problem Background
When pulling Docker images on a server located in China, the default Docker registry mirrors are hosted abroad. Network latency or blocking often causes timeout errors.
Common Invalid Mirror Configurations
Many online tutorials list long arrays of registry-mirrors and insecure-registries. Most of those domains are now unreachable, leading to persistent pull failures.
{
"registry-mirrors": [
"https://docker.1panelproxy.com",
"https://2m11665s.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"https://dockerhub.azk8s.cn",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://k8s.gcr.io",
"https://github-releases.githubusercontent.com",
"https://ustc-edu-cn.mirror.aliyuncs.com"
],
"insecure-registries": [
"registry.me:5000",
"http://docker.mirrors.ustc.edu.cn",
"https://k8s.gcr.io",
"https://github-releases.githubusercontent.com",
"https://registry-1.docker.io",
"decs.com"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}Verified Mirrors (2025)
Testing identified three mirrors that provide stable, MB‑level download speeds.
{
"registry-mirrors": [
"https://docker.1ms.run", // millisecond mirror – fastest, recommended
"https://dockerproxy.com", // stable proxy with good compatibility
"https://hub.rat.dev" // backup source for occasional outages
]
}Configuration Steps
Edit the Docker daemon configuration file /etc/docker/daemon.json and replace its content with the JSON shown above.
Reload the systemd daemon and restart Docker:
systemctl daemon-reload && systemctl restart dockerVerify the new mirrors by pulling a small image, for example: docker pull hello-world Successful download confirms the setup.
Practical Validation Tips
Check domain reachability with ping docker.1ms.run. A reply indicates the mirror is reachable from the current network.
Test pull capability directly: docker pull docker.1ms.run/hello-world If the image downloads, the mirror works.
Key Lessons
Diagnose the root cause (network, registry, permissions) before applying a configuration.
Mirror URLs can become obsolete quickly; prefer sources published within the last year.
AI can help locate current mirrors, but each URL should be manually verified (e.g., ping, test pull).
Java Architect Handbook
Focused on Java interview questions and practical article sharing, covering algorithms, databases, Spring Boot, microservices, high concurrency, JVM, Docker containers, and ELK-related knowledge. Looking forward to progressing together with you.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
