Problem entry · machine-readable · 大模型本地部署

Open WebUI 用 Docker 起不来(镜像拉不动、端口被占、页面打不开、数据丢)

本页嵌入 #trove-entity JSON(本条目全量结构化数据);全库数据见 /agent/trove.json。

元数据

idopen-webui-deploy-fail收录2026-09-24
问题域大模型本地部署主题分组Agent 工具·运行与配置
适用工具open-webuidocker · 外部工具

症状

```

# 形态 1:镜像拉取超时

Error response from daemon: ... context deadline exceeded (Client.Timeout exceeded while awaiting headers)

# 形态 2:宿主端口被占

docker: Error response from daemon: failed to set up container networking:

failed to bind host port 0.0.0.0:3000/tcp: address already in use

# 形态 3:容器 Up 但浏览器打不开(启动未完成,最常见)

(浏览器)This site can't be reached / 连接被拒绝

# 形态 4:删容器重建后账号、会话、知识库清空

(页面)回到首次注册引导

```

原因

镜像源慢(ghcr.io 直连)、宿主端口被占用、首次启动需 2-3 分钟准备 embedding 模型、数据目录 `/app/backend/data` 没有挂到 volume——四个断点分别对应上面四种形态。

解法

1. 换国内镜像前缀:`ghcr.nju.edu.cn/open-webui/open-webui:main`(实测 3 分 24 秒拉完);

2. 端口冲突先 `docker ps` / `ss -tlnp` 定位,旧容器删掉或换宿主端口;

3. 页面打不开先 `docker logs` 看是不是还在启动,等首次 200(本机实测冷启动 154 秒);

4. 一律加 `-v open-webui:/app/backend/data`,重建容器不丢数据;

5. 连不上 ollama 另见 [open-webui-ollama-connect](open-webui-ollama-connect.html)。

验证证据

- 本机实测(2026-09-24,WSL2 Ubuntu + Docker 29.1.3,独立容器/独立卷,未碰其它容器):

- 直连 `ghcr.io` 限时 25 秒未完成(部分层 Download complete,超时退出码 124);`ghcr.nju.edu.cn` 实测 3 分 24.222 秒拉完,digest `sha256:8b432fe0a65b91116afc7961365c6cca5379cc923171386a96691f3471f3cae9`,大小 1656076851 字节;

- python3 占住宿主 3000 端口后 `docker run -p 3000:8080` → `failed to bind host port 0.0.0.0:3000/tcp: address already in use`(创建失败);换 `-p 3300:8080` 成功;

- 冷启动到首次 HTTP 200 实测 154 秒;容器日志可见 embedding 模型加载(`all-MiniLM-L6-v2`)与 `uvicorn` 启动行;

- `-v` 挂卷:`docker inspect` Mounts 显示卷挂到 `/app/backend/data`;`docker rm -f` 后同卷重建,`webui.db` 仍存在(647168 → 684032 字节);不挂卷容器 Mounts 为 `[]`;

- 证据:实测复现日志(2026-09-24)。

- 工具侧实测素材(2026-09-01,实测复现日志(2026-09-01)):ghcr.nju.edu.cn 镜像全链路通过(连 ollama 真实推理)。

- 未实测:Docker Desktop(Windows/macOS)形态、compose 形态(机制由官方文档与容器网络规则标注)。

来源与证据

素材来源:站内文档(工具侧 2026-09-01 实测素材,本条目 2026-09-24 独立复现)

验证证据:Evidence details kept locally (2026-09-24)