【大模型部署——Ollama 血泪记】从「一行命令」到「删盘放弃」的 6.5 小时
摘要: 尝试在 VMware CentOS 虚拟机中通过 Docker 运行 Ollama 时遭遇灾难性失败。使用 GTX 1650 显卡进行 GPU 透传后,运行 7B 模型导致 PCIe 过载,造成虚拟网卡永久损坏。6.5 小时抢救无效后被迫删除虚拟机重装系统。关键教训:旧显卡应避免虚拟机 GPU 透传,建议直接在宿主机运行小模型。最终通过原生安装 Ollama 1.5B 模型实现稳定运行,性
Docker 版 Ollama 血泪记:从「一行命令」到「删盘放弃」的 6.5 小时
硬件:GTX 1650 4 GB
平台:Windows 宿主机 + VMware + CentOS 10 + Docker
时长:12:00 → 18:30(6.5 h)
结局:网卡蒸发,虚拟机报废,全盘重来
结论:旧显卡别在虚拟机里玩 GPU 透传,灾难级体验
一、被官网一行命令诱惑
Ollama 官网亮出大招:
docker run -d --gpus all -p 11434:11434 ollama/ollama
我心想:
「宿主机太吵,装个 CentOS 虚拟机,干净又高级!」
于是踏上了 6 小时的不归路。
二、踩坑时间线(按崩溃顺序)
| 阶段 | 耗时 | 关键事件 |
|---|---|---|
| ① 虚拟机准备 | 30 min | VMware 17 + CentOS 10,勾选「透传 GPU」,宿主 GTX 1650 识别正常 |
| ② Docker 安装 | 20 min | dnf install docker-ce 一路绿灯 |
| ③ NVIDIA Toolkit | 40 min | 装 nvidia-container-toolkit,改配置,重启 Docker |
| ④ 拉镜像 & 启动 | 10 min | docker run --gpus all … 日志显示检测到 CUDA,心里美滋滋 |
三、灾难开始:网卡蒸发
⑤ 首次推理 → 黑屏死机
docker exec -it ollama ollama run deepseek-r1:7b
输入「你好」,瞬间 100 % CPU,VMware 提示强制关机。
重启后——
⑥ 网卡消失
ip a # 只剩 lo
lspci | grep -i eth # 空
VMware 设备管理器里连网卡条目都不见了!
⑦ 抢救 2 小时:全失败
- 重新添加网卡 → 不识别
- 改
.vmx→ 无法保存 dracut/modprobe vmxnet3→ 无设备
结论:虚拟硬件描述文件损坏,只能删盘重来。
四、根因复盘:PCIe 风暴冲垮虚拟桥
| 诱因 | 现象 | 结果 |
|---|---|---|
| GPU 透传 + 7B 模型冷启动 | 瞬时 PCIe 流量 > 3 GB/s | 虚拟桥掉线 |
| CentOS 10 内核 6.8 | VFIO bug | 触发总线失联 |
Docker --gpus all |
直通全部计算单元 | 宿主机 GPU 上下文切换失败 |
| VMware 网卡模拟 | 依赖 PCIe 虚拟桥 | 桥设备掉线 → 网卡蒸发 |
一句话:旧卡 + 虚拟机 GPU 透传 + 大模型冷启动 = 灾难。
五、教训与建议
✅ 旧显卡正确姿势
- 宿主机原生装 Ollama(Windows 直接装)
- 不透传 GPU 给虚拟机
- 1.5 B 小模型常驻显存
- 内网穿透暴露端口,外部调用
❌ 别碰的组合
- VMware / VirtualBox +
--gpus all - CentOS Stream 最新内核
- 7B 以上模型冷启动
- Docker on VM(两层虚拟化,性能 + 兼容性双悬崖)
六、止损:21 分钟重来
救援 3 小时无果,30 秒删盘,1 分钟新建虚拟机,20 分钟装 CentOS 7——网卡健在,世界清净。
心理活动:
「网卡都不认了,还救啥?删了重来,一杯咖啡搞定。」
七、6 小时换来的两行命令
【在人工智能的不断帮助下,终于通过在本地编译部署GPU实现了大模型自由】
详见
【大模型本地化踩坑实录】——从“CMake 找不到编译器”到“GPU 全速飞”——一张 GTX 1650 的逆袭
# 宿主机(5 分钟)
ollama pull deepseek-r1:1.5b
ollama run deepseek-r1:1.5b
# 穿透(1 分钟)
natapp -authtoken=xxx -localPort 11434
测速:本地 0.8 s,穿透 1.5 s——比 Docker on VM 快 10 倍,稳 100 倍,省 6 小时。
八、刻烟吸肺的总结
- 官网一行命令 ≠ 你的硬件适配
- 虚拟机 GPU 透传是高端玩法,旧卡慎入
- 磁盘空间是编译通行证,留 10 GB 再谈编译
- 失败日志比 Google 更准,
pci-passthrough failed直指元凶 - 适合自己的才是最好的——旧卡 + 小模型 + 原生系统,比 Docker 高大上更实用
后记:删除虚拟机那一刻,我悟了——
“不是 Docker 不好,是我硬件不配;不是官网骗我,是我没看警告。”
旧卡也能飞,但别让它飞在虚拟机上空。
更多推荐

所有评论(0)