在国内服务器上直接拉取 ghcr.io/open-webui/open-webui 镜像常常失败或极其缓慢。本文提供一个简单、可靠的方法:借助阿里云容器镜像服务中转镜像,实现快速部署 Open WebUI。
为什么需要这个方案?
Open WebUI 的官方 Docker 镜像托管在 GitHub Container Registry(ghcr.io),而该地址在国内访问受限。即使能连上,下载速度也极慢,严重影响部署效率。
解决方案思路:
- 在可访问外网的机器上拉取官方镜像;
- 将镜像推送到阿里云容器镜像仓库;
- 国内服务器从阿里云高速拉取并运行。
操作步骤
💡 前提:你已有一个阿里云账号,并开通了 容器镜像服务 ACR(个人版免费)。
第一步:在外网环境拉取官方镜像
在你的本地电脑或海外服务器执行:
docker pull ghcr.io/open-webui/open-webui:main
第二步:登录阿里云镜像仓库
替换以下命令中的占位符为你的实际信息(可在 ACR 控制台「访问凭证」中找到):
docker login --username=你的阿里云账号 crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com
示例:
docker login --username=myemail@example.com crpi-abcd1234.cn-shanghai.personal.cr.aliyuncs.com
第三步:打标签并推送至阿里云
# 打标签
docker tag ghcr.io/open-webui/open-webui:main crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com/your_namespace/open-webui:1.0
# 推送
docker push crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com/your_namespace/open-webui:1.0
your_namespace:你在 ACR 中创建的命名空间(Namespace)1.0:自定义镜像版本标签,便于管理
第四步:在国内服务器部署 Open WebUI
登录你的国内 ECS 实例,执行以下命令:
1. 登录阿里云仓库(首次需认证)
docker login --username=你的阿里云账号 crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com
2. 拉取镜像(秒级完成!)
docker login --username=你的阿里云账号 crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com
3. 启动容器(关键:网络配置!)
docker run -d \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com/your_namespace/open-webui:1.0
✅
--add-host=host.docker.internal:host-gateway是让容器访问宿主机的关键!
第五步:配置宿主机 Ollama 监听所有接口
⚠️ 这一步极易被忽略,却是连接成功的核心!
默认情况下,Ollama 仅监听 127.0.0.1:11434,容器无法访问。必须修改其配置:
# 编辑服务文件
sudo nano /etc/systemd/system/ollama.service
在 [Service] 段落下添加一行:
Environment="OLLAMA_HOST=0.0.0.0:11434"
保存后重启服务:
sudo systemctl daemon-reload
sudo systemctl restart ollama
验证监听状态:
netstat -tulnp | grep 11434
# 应显示:tcp6 0 0 :::11434 :::* LISTEN
第六步:在 Open WebUI 中配置 Ollama 地址
- 浏览器访问
http://<你的服务器IP>:3000 - 进入管理员面板 -> 设置 -> 外部连接
- 将 管理 Ollama 接口连接 URL设置为:
http://host.docker.internal:11434 - 点击 Verify Connection → 显示 “✅ Connected”

✅ 此时模型列表将自动加载!
⚠️ 注意事项
| 项目 | 说明 |
|---|---|
| 数据持久化 | -v open-webui:/app/backend/data 使用 Docker Volume,重启不丢数据 |
| 安全组 | 务必开放 3000 端口(WebUI),不要开放 11434 端口到公网 |
| 私有仓库 | 阿里云 ACR 个人版默认私有,每次拉取前需 docker login |
| 镜像更新 | 升级时重复“拉取 → 打标 → 推送”流程,更新标签即可 |
| 网络原理 | host.docker.internal 在 Linux 上通过 --add-host 映射为宿主机网关 IP(通常是 172.17.0.1) |
🎯 总结
通过阿里云容器镜像服务作为“中转站”,我们不仅解决了境外镜像拉取慢的问题,还通过标准的 Docker 网络配置,打通了容器访问宿主机服务的通道。
✅ 核心思想:
“外网拉 → 云上存 → 内网跑 + 容器通宿主”
这套方案适用于任何境外 Docker 镜像在国内的快速、稳定部署,已在多台阿里云 ECS 实例上验证通过。