Pre
LLM - Dify(1.0.1)搭建本地私有RAG知识库完整指南
问题背景
在使用Docker部署Dify时,执行docker-compose up -d
命令可能会因网络问题导致镜像拉取失败,具体报错如下:
✘ worker Error Get "https://registry-1.docker.io/v2/": net/http: request canceled while... 18.4s
✘ api Error context canceled 18.4s
✘ web Error Get "https://registry-1.docker.io/v2/": net/http: request canceled while wa... 18.4s
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
此问题通常是由于国内网络访问Docker官方镜像源(registry-1.docker.io
)不稳定或超时导致的。本文将提供通过配置国内镜像源加速拉取的解决方案。
原因分析
Docker默认从境外镜像仓库拉取镜像,受网络限制时可能出现以下问题:
- 拉取速度缓慢。
- 完全无法连接,导致
docker-compose
启动失败。 - 依赖镜像较多的项目(如Dify需拉取约10个镜像)失败率更高。
解决办法
通过修改Docker配置,替换为国内镜像源以加速拉取。
"registry-mirrors": [
"https://docker.1panel.live",
"https://docker.nju.edu.cn",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com",
"https://registry.cn-hangzhou.aliyuncs.com"
]
配置步骤
Linux系统
- 创建或修改配置文件
这个文件是docker的一个附加的配置文件,不是系统配置文件,一般临时修改都是修改这个文件即可。Docker初次安装后是没有daemon.json的,需要自己创建
配置文件的默认路径: /etc/docker/daemon.json
-
写入镜像源配置
将上述镜像源列表复制到文件中 :{ "registry-mirrors": [ "https://docker.1panel.live", "https://docker.nju.edu.cn", "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com", "https://registry.cn-hangzhou.aliyuncs.com" ] }
-
重启Docker服务
创建并修改完daemon.json文件后,reload文件生效,并且重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
Windows系统
-
打开Docker Desktop设置
右键任务栏Docker图标 → Settings → Docker Engine。 -
修改配置文件
在右侧编辑框中添加registry-mirrors
项:
或者直接修改: C:\Users\Administrator\.docker\daemon.json
- 保存并重启
点击 Apply & Restart 使配置生效。
验证配置
- 检查镜像源是否生效
执行以下命令,查看输出中是否包含配置的镜像地址:docker info
- 重新拉取Dify镜像
# 停止并移除由 docker-compose up 启动的容器、网络、挂载卷等资源 docker-compose down # 根据 docker-compose.yml 文件启动容器,并以后台模式(detached mode)运行 docker-compose up -d
总结
通过替换国内镜像源,可显著提升Dify镜像拉取成功率。若问题仍未解决,可尝试:
- 使用
docker pull [image]
单独拉取失败镜像。 - 检查防火墙或DNS设置。