必须修改宿主机的 /etc/docker/daemon.json 配置国内镜像加速器(如阿里云或中科大源),格式为 {"registry-mirrors": ["https://..."]},保存后重启 docker 服务,并用 docker info 验证生效,否则宝塔拉取镜像始终缓慢。

宝塔面板里 Docker 拉取国外镜像慢,不是面板的问题,而是 Docker 守护进程没配国内加速器——必须改 daemon.json,重启 Docker 服务,否则宝塔点多少次“拉取”都一样慢。
宝塔面板下修改的是宿主机的 daemon.json,不是面板自己的配置
宝塔只是个 Web 管理界面,它调用的是系统级 Docker 服务。你在宝塔里点“Docker” → “镜像管理” → “拉取镜像”,背后走的仍是 docker pull 命令,完全依赖宿主机 Docker 守护进程的配置。
- Linux(宝塔常见环境):配置文件在
/etc/docker/daemon.json,该文件默认可能不存在,需手动创建 - 别去改宝塔目录下的任何 JSON 文件,比如
/www/server/panel/plugin/docker里的东西,无效 - 改完必须重启 Docker 服务,宝塔界面不会自动 reload,也不支持“热加载”
填什么地址?优先选阿里云专属地址或中科大源
国内公开镜像源稳定性差异大,2026 年实测仍稳定可用的有:
- 阿里云(推荐):登录容器镜像服务控制台 → 左侧「镜像工具」→「镜像加速器」,拿到形如
https://<your_id>.mirror.aliyuncs.com</your_id>的专属地址(带 ID 才能同步及时) - 中科大:直接用
https://docker.mirrors.ustc.edu.cn,无需注册,但偶尔有数小时同步延迟 - 别再用网易源
https://hub-mirror.c.163.com:官方已多年未更新,大量新镜像缺失 - 多个地址可写成数组,但建议只填 1–2 个,Docker 是顺序尝试,填太多反而增加失败等待时间
正确写法示例(注意 JSON 格式):
{ "registry-mirrors": ["https://abc123.mirror.aliyuncs.com"] }
错误写法(常见坑):
-
"registry-mirrors": "https://..."—— 必须是数组[],不是字符串 -
http://...—— 协议必须是https://,Docker 会直接忽略 http 地址 - 末尾多逗号、引号不闭合、中文标点 —— 导致 Docker 启动失败,
systemctl status docker会报 JSON 解析错误
改完怎么验证?别信宝塔界面,用命令行看真实结果
宝塔的“镜像列表”或“操作日志”不显示实际走的 registry 地址,必须用终端验证:
- 执行
docker info | grep -A 1 "Registry Mirrors",输出中出现你填的地址才算生效 - 再跑一次
docker pull nginx:alpine,观察日志里是否出现类似pulling from docker.mirrors.ustc.edu.cn的域名(不是registry-1.docker.io) - 如果
docker info没输出、或报错“Cannot connect to the Docker daemon”,说明 Docker 服务根本没起来,大概率是daemon.json格式错了
宝塔用户特别注意的两个盲区
一是宝塔安装的 Docker 可能被禁用 systemd 管理(尤其老版本一键脚本安装),此时 systemctl restart docker 无效,得用 service docker restart 或直接杀进程:kill -9 $(pidof dockerd) 再手动启动;二是部分宝塔用户用的是 OpenResty 或 Nginx 反代了本地 2375 端口,若同时开了防火墙或安全组,可能拦截 Docker daemon 通信,导致配置看似成功、实则不生效——这种问题只能看 journalctl -u docker 日志定位。











