
issue:Cannot run on lower instruction set.
快速结论:该错误通常发生在 CPU 仅支持 x86-64‑v1 指令集(如较老的 Intel Atom D525 等型号)时,Open WebUI 依赖的某些 Python 包(如 sentence‑transformers)编译时启用了较新的 AVX/AVX2 指令,导致 Docker 容器在启动时直接崩溃(killed)。优先排查 CPU 是否支持 avx2 指令集,或考虑使用离线模式(OFFLINE_MODE)减少依赖。
问题场景
用户在装有 Intel D525 处理器的 Debian 14 系统上,通过 Docker 运行 Open WebUI v0.9.6。容器启动后立即被系统杀死(killed),没有任何正常日志输出。
报错原文
The container was killed.
同时,用户在关联 Issue #24533 中报告了类似的 illegal instruction 错误。
原因分析
可能原因:Open WebUI 的 Docker 镜像中部分预编译的 Python 依赖(如 sentence-transformers、torch 等)使用了 AVX、AVX2 或 FMA 等较新的 x86‑64 指令集扩展。而 Intel D525 是 x86‑64‑v1 级别 CPU,不支持这些指令。当操作系统或 Python 运行时尝试执行包含不支持的指令的机器码时,会触发 SIGILL(非法指令)或直接被内核杀死容器进程,表现为“容器被 killed”。
官方在评论中确认:“it’s not only about local sentence transformer … many other dependencies have this requirement. It’s just not possible” —— 指单纯禁用本地模型服务(如通过 OFFLINE_MODE)无法完全避免该问题,因为底层依赖库在编译时就假设了 x86‑64‑v2/v3 指令集。
环境排查
- CPU 型号及支持指令集:通过
lscpu | grep Flags查看是否包含 avx、avx2、fma。 - Linux 发行版及内核版本:Debian 14,注意这类较老 CPU 建议使用更新的内核。
- Docker 版本及镜像标签:确认使用的是
open-webui:0.9.6等标准镜像。 - 尝试设置环境变量
OFFLINE_MODE=true启动容器,观察是否能缓解(官方注释:该变量仅影响句子嵌入模型下载,不会解决底层库的问题)。
解决步骤
- 确认 CPU 指令集级别:在宿主机运行
cat /proc/cpuinfo | grep flags | head -1,检查是否包含 avx2。如果不包含,确认 CPU 仅为 x86‑64‑v1 级别。 - 尝试使用官方 Docker 镜像的
OFFLINE_MODE=true:启动时添加环境变量-e OFFLINE_MODE=true,这可以禁用 sentence‑transformer 相关下载和加载。但这在 Issue 中被确认无法彻底解决问题。 - (可优先尝试)改用社区提供的低指令集编译版本:搜索是否有维护者或社区成员在 GitHub 上提供了针对 x86‑64‑v1 编译的 Open WebUI 镜像,或询问在该 Issue 下是否有人给出了替代方案。
- 考虑更换较新的硬件:如果上述步骤均不行,较新 CPU(如支持 AVX2 的 Intel J1900 以上)是最直接的解决方式。
- 自行从源码编译:在原系统上,参考 Open WebUI 的 Dockerfile,修改其基础镜像或 pip install 的参数(如
--force-reinstall --no-binary :all:)来强制从源码编译依赖。但这可能非常耗时且需要开发经验。 - 在 Docker 层面禁用特定指令集:在 Docker run 命令中添加
--security-opt seccomp=unconfined或通过--cpu-rt-runtime等参数尝试,但通常无法解决底层二进制指令不兼容。
验证方法
容器启动后,使用 docker ps 确认容器处于运行状态。再通过 docker logs 容器ID 查看是否有正常启动日志(如 Uvicorn running on http://0.0.0.0:8080)。如果日志仍为空或容器再次被 killed,则问题未解决。



