先说结论:在小米消费级路由器上用 Docker Compose 跑 Ollama,属于社区/自制固件边缘部署,不是小米官方在路由器商品页承诺的「一键大模型」。宿主是路由器(或你另接的 NAS/PC),不要和手机 HyperOS / 手机本地大模型混为一谈。报错通常落在三类:Compose 网络与宿主网桥/子网冲突、卷挂载权限、内存不足被 OOM。下文只给可核对的官方文档路径与通用排查命令;不编造无出处的部署效果口号、伪功耗表或无方法学的模型打分表。
先分清宿主:路由器 ≠ 手机 ≠ PC/NAS
| 宿主类型 | 典型产品锚 | 和本篇关系 |
|---|---|---|
| 消费级路由器 | Xiaomi 路由器 BE6500 / BE6500 Pro 等 | 本篇默认讨论对象;官方卖的是 Wi-Fi 路由能力,不是 Ollama 套件 |
| PC / NAS / 自建 Linux | 桌面或服务器发行版 + Docker Engine | Compose/Ollama 官方文档的主战场;资源远大于路由 SoC |
| 手机 | 小米/红米手机 HyperOS | 不是本篇 Docker 宿主;勿把手机型号表套进路由器排查 |
出处:小米商城产品页 Xiaomi 路由器 BE6500、BE6500 Pro;Ollama 项目 GitHub ollama/ollama、Ollama FAQ。MobileModels 仅在文中实际点名手机时使用——本篇不点名手机 SKU。
报错一:网络 / bridge / 子网重叠
Compose 默认为项目建 bridge 网络,服务可用服务名互访;自定义 networks + ipam.subnet 时,子网不得与宿主已有网桥/地址池重叠,否则会出现 Pool overlaps with other one 一类失败。路由固件上往往已有 br-lan / docker0,再手写冲突网段更容易踩坑。
建议顺序:
docker network ls与ip link/ 路由管理页确认现有网桥与 LAN 段。- 单容器场景优先不写自定义
networks,用 Compose 默认网络(官方说明:默认即 bridge,服务名可 DNS 发现)。 - 必须自定义时,选与 LAN/docker0 不重叠的子网,并按 Docker 文档配置
ipam;创建失败时以守护进程报错原文为准,勿背「神秘错误码表」。 - 端口占用(如
11434)改映射或停掉占用进程后再docker compose up。
services:
ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
environment:
- OLLAMA_HOST=0.0.0.0:11434
volumes:
ollama_data:
出处:Docker Docs Networking in Compose;Compose file · networks / ipam;Bridge network driver;docker network create(子网重叠会失败)。
报错二:卷路径 / 权限拒绝
permission denied、Access denied on path 多半是宿主目录属主/权限与容器内进程 UID 不一致(共享盘 nobody、外置 USB 挂载选项等)。这是 Linux 权限模型问题,不是「Ollama 镜像坏了」。
- 先
ls -la看宿主目录;用docker logs/docker exec … id对照容器用户。 - 优先:目录属主与挂载方式对齐;或改用 Compose named volume(由 Docker 管理数据目录)。
chmod 777/user: "0:0"仅作短时对照,长期 root 跑推理会放大安全面——路由还承担全家上网,更应谨慎。- 外置盘注意文件系统类型与挂载选项(只读、同步策略),换盘对照再下结论。
出处:Docker Docs Compose services(volumes / user 等字段语义以官方为准);Ollama 镜像与数据目录约定见 ollama/ollama。
报错三:内存吃紧与 OOM
路由 SoC 内存通常远小于 PC/NAS。进程退出码 137、dmesg 出现 oom-kill,或 docker inspect 里 OOMKilled 为 true,应先看整机 free/swap与模型体积,而不是改无依据的「成功率参数」。
free -m、swapon -s、dmesg | grep -i oom、docker stats。- 优先拉更小的公开模型标签;并发与常驻模型数宁可偏保守。
- 官方可核对的环境变量(非路由专用「魔法值」):
OLLAMA_HOST(默认回环,局域网访问需显式绑定)、OLLAMA_KEEP_ALIVE、OLLAMA_MAX_LOADED_MODELS等,以 Ollama FAQ / 源码 envconfig 为准。 - swap 可缓解尖峰,但会磨损闪存/外置盘,并拖慢推理;是否启用由你权衡,本文不给伪「最优 GB 数」。
出处:Ollama FAQ · configure server / expose on network;环境变量实现 envconfig/config.go;FAQ 源稿 docs/faq.mdx。
ollama list / docker stats 现场为准。文首已声明不编造无出处的部署效果口号。可选:Ollama + Web UI 同网
若再跑 Open WebUI,让两服务加入同一 Compose 网络,用服务名访问(例如 http://ollama:11434),并按 Ollama FAQ 配置 OLLAMA_HOST / 允许的 Origins。前端镜像与变量以 Open WebUI 仓库说明为准;本站不担保第三方 UI 版本组合。
出处:GitHub open-webui/open-webui;Compose 服务发现见上文 Docker Networking 文档。
验收清单
docker compose ps中 ollama 为 running;curl本机或局域网:11434有 API 响应。docker logs ollama无持续 permission / network 报错;OOMKilled为 false。- 路由管理页确认 LAN/Wi-Fi 正常——推理容器不应拖垮全家上网;异常时先停容器再对照。
- 行情/配件可对照站内 /price;手机本地模型题与本篇路由 Docker 分轨。
FAQ
- Q:小米官方会在路由器里预装 Ollama 吗?
- A:公开商品页描述的是路由/Wi-Fi 能力。Docker + Ollama 是你在自有固件或兼容环境下的自建,请勿写成官方标配。
- Q:一定要写自定义 bridge 子网吗?
- A:多数单机 Compose 用默认网络即可;只有多栈隔离或与现网冲突时才需要自定义,且子网不能重叠。
- Q:权限问题长期用 root 容器可以吗?
- A:短时对照可以,长期不推荐——路由是网络边界设备,扩大容器权限等于扩大攻击面。
- Q:手机能不能直接套这篇 compose?
- A:不能。手机不是这篇的 Docker 宿主;手机侧请走各厂商公开发布的端侧能力说明。