Docker 镜像加速与国内拉取配置
发布时间:2026-06-25 20:23       
更新时间:2026-06-26 15:20
docker pull 停在最后一层反复重试,是国内服务器最常见的场景之一。原因很简单:默认镜像仓库在境外,公网链路时快时慢。解决办法是把 Docker 的下载源换成国内加速节点。
一、改 daemon.json
编辑 /etc/docker/daemon.json(没有就新建),加入 registry-mirrors 字段:
{
"registry-mirrors": ["https://docker.m.daocloud.io"]
}
数组可按需追加多个地址,Docker 按顺序尝试;registry-mirrors 只影响拉取,不影响推送与登录。第三方加速地址变动较快,具体填什么以各加速服务当前公布的说明为准,失效就换。改完让配置生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
注意 restart 会连带重启所有容器,生产服务器安排在低峰操作,或提前确认容器都配了重启策略。
二、验证生效
docker info 的输出里搜 Registry Mirrors,能看到刚配的地址即配置成功;看不到这个字段,多半是 json 格式写错,服务回退了默认配置,journalctl -u docker 能看到报错。再拉个小镜像实测:docker pull alpine,观察下载速度是否恢复正常。两步都过了,配置才算完成。多拉几次不同的镜像,确认提速不是偶然。
三、备选方案
加速节点不稳时的替代路径:其一,配置 HTTP 代理,在 systemd 的 docker 服务配置里设置代理环境变量;其二,境外中转,在一台能顺畅拉取的机器上 docker save 导出镜像,scp 到目标机后 docker load 导入,走内网 IP 传输更快,同机器房时尤其明显,适合镜像数量少的场景;其三,把常用镜像同步到国内镜像仓库自己的命名空间下,从那里拉取。三种方案按镜像数量和更新频率选,没必要全配。
四、长期建议
频繁部署的环境,把 nginx、redis、数据库这类基础镜像按固定版本收进私有仓库,提前配好访问凭证,再配上版本清理策略,构建部署不再临时依赖公网加速节点,稳定性和可控性都更高。
配置本身五分钟,配完一定拉一次镜像实测速度,别只看命令不报错就认为成功。