docker pull 在国内慢是因默认连接境外 docker hub,未走国内 cdn。解决方法是配置 registry-mirrors 加速器:linux/macos 修改 /etc/docker/daemon.json(mac 用 docker desktop 设置界面),填入如 https://docker.mirrors.ustc.edu.cn 等 https 地址数组,重启 docker daemon 后验证生效。

为什么 docker pull 在国内慢得像在等编译
因为默认走的是 Docker Hub 官方 registry(registry-1.docker.io),物理链路绕远、中转节点少,还常被限速。不是你网络差,是请求根本没走国内 CDN。
怎么给 Docker 配加速器(Linux/macOS)
改的是 /etc/docker/daemon.json,不是环境变量,也不是 ~/.docker/config.json —— 后者只管登录和镜像名映射,不控制拉取路径。
实操建议:
- 先确认 Docker 正在运行:
systemctl is-active docker(Linux)或docker info(看输出里有没有Registry Mirrors字段) - 编辑
/etc/docker/daemon.json,加入"registry-mirrors"数组,例如用中科大源:{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]} -
sudo systemctl daemon-reload && sudo systemctl restart docker—— 必须重启 daemon,改完文件不重启等于没改 - 验证是否生效:
docker info | grep -A 1 "Registry Mirrors",看到地址就对了
常见加速器地址和兼容性注意点
不是所有镜像都能被加速器缓存,比如私有 registry、带端口的地址(localhost:5000)、或用了 docker pull xxx.azurecr.io/yyy 这类非 Docker Hub 域名的,加速器直接不介入。
国内常用可选地址(填进 registry-mirrors 数组):
- 中科大:
https://docker.mirrors.ustc.edu.cn(稳定,但偶尔同步延迟几小时) - 阿里云:需登录容器镜像服务控制台,领取专属地址,形如
https://<xxx>.mirror.aliyuncs.com</xxx>(更新快,但要注册) - 网易:
https://hub-mirror.c.163.com(已多年未更新,不建议新用)
别把多个镜像源写成逗号分隔字符串——必须是 JSON 数组;也别加 http://,Docker 只认 https:// 开头的镜像源。
Mac 上 Docker Desktop 的配置位置不一样
Mac 用户别去翻 /etc/docker/daemon.json,Docker Desktop 自己维护一套配置,改了系统级文件也没用。
正确路径:
- 打开 Docker Desktop → ⚙️ Settings → Docker Engine
- 在 JSON 编辑框里加
"registry-mirrors"字段,格式同上 - 点 Apply & Restart,它会自动 reload 并重启后台服务
如果点了 Apply 没反应,大概率是 JSON 格式错了,检查逗号、引号、括号是否配对——Docker Desktop 对语法错误零容忍,错一个字符就拒绝保存。
加速效果不是立竿见影的,首次拉某个镜像时仍可能走一次官方源(触发缓存),第二次开始才明显变快。别拉一半 Ctrl+C 就以为失败了,耐心等几秒。










