news 2026/4/26 3:37:52

【技术底稿 23】Ollama + Docker + Ubuntu 部署踩坑实录:网络通了,参数还在调

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【技术底稿 23】Ollama + Docker + Ubuntu 部署踩坑实录:网络通了,参数还在调

下午5点到晚上10点半,5个半小时。代码一行没改,全是环境、配置、默认参数的坑。
网络隔离、防火墙、Ollama默认监听127.0.0.1、Linux vs Windows差异——每一个都踩了一遍。
目前网络已通,向量模型的上下文问题还在调。


前置条件

  • 操作系统:Ubuntu 桌面版

  • Ollama版本:v0.20.4

  • Docker环境:本地容器化部署

  • 显卡:NVIDIA MX150(当前纯CPU运行)

  • 核心模型:nomic-embed-text(上下文上限2048)


一、前言

今天从下午5点折腾到晚上10点半,看似是业务代码报错,实则是一场被网络隔离、防火墙、Ollama默认参数、跨系统差异联手“背刺”的连环事故。

所有问题的共性是:代码本身无任何Bug,全是环境、中间件默认配置、系统兼容性的隐性坑。

这篇把今天踩的坑按排查顺序完整复盘,以后遇到类似问题直接对照定位,再也不用靠玄学试错。


二、网络 & Docker容器类坑(已解决)

2.1 Docker容器网络隔离坑

现象:宿主机本地、Windows客户端访问服务完全正常,Docker容器内部访问宿主机端口/服务直接超时。

根因:Docker容器使用独立的虚拟网络,与宿主机网络天然隔离,不能直接通过localhost访问宿主机服务。

结论:排查容器内服务调用,优先确认是否用对了宿主机真实IP,而非localhost

2.2 防火墙端口放行坑

现象:外部网络、宿主机本地都能正常连接,唯独Docker容器访问直接报Connect timed out

根因:Ubuntu ufw防火墙默认拦截外部/跨网段端口请求,即使服务本身监听了0.0.0.0,没放行端口也会被拦截。

解决

bash

ufw allow 11434

2.3 Ollama跨网络访问坑

现象:宿主机本地调用Ollama正常,Docker容器/其他机器调用11434端口直接连接失败。

根因:Ollama默认仅监听127.0.0.1,仅允许宿主机本地访问。

解决

bash

OLLAMA_HOST=0.0.0.0 ollama serve

三、Ollama部署坑

3.1 监听地址坑(已解决)

bash

OLLAMA_HOST=0.0.0.0 ollama serve

3.2 上下文上限坑(正在排查中)

现象:同一份代码、同一份分片文本,Windows上Ollama运行正常,Linux上直接阻塞、报500错误或1分钟超时。

错误日志

text

{"error":"the input length exceeds the context length"}

根因

  • 向量模型nomic-embed-text原生上下文上限为2048

  • Ollama Linux版默认num_ctx参数过高,模型不兼容直接阻塞

  • Windows版有自动容错截断,Linux版校验严格

当前状态:正在调整分块大小和num_ctx参数,尝试手动对齐模型上限:

bash

OLLAMA_CONTEXT_LENGTH=2048 ollama serve

后续排查方向:确认LangChain4j调用时是否正确传递了num_ctx参数。


四、业务代码 & 分片逻辑坑

4.1 分片本身无问题

排查后确认:语义分片、标题/元数据/正文拆分逻辑完全合规,文本长度可控,排除业务代码与分片规则问题

4.2 多业务耦合干扰坑

爬虫流程强耦合“图片FTP上传”,FTP端口未放行导致连锁报错,严重干扰排查方向。

优化方向:核心业务链路与非核心附件上传流程解耦,隔离异常影响范围。


五、硬件 & 系统环境坑

Linux vs Windows Ollama核心差异

对比项Windows OllamaLinux Ollama
参数校验自动兼容、弱校验、容错截断严格强校验、无自动容错
网络监听相对宽松仅本地回环,跨网段默认封禁
上下文处理超长文本自动截断严格匹配模型上限,超限直接阻塞

核心结论:Linux环境下不能照搬Windows用法,隐性参数必须手动约束配置

纯CPU推理性能坑

轻量向量模型在批量计算场景下,CPU资源消耗极高,低压笔记本CPU无法长时间承载,极易引发超时、服务假死。(当前显卡驱动未装,纯CPU运行)


六、核心结论

序号结论
1Linux下Ollama不能照搬Windows习惯,num_ctx、监听地址等参数必须手动约束
2NVIDIA独显设备跑AI服务,驱动是刚需,当前未装,纯CPU性能不足
3Docker + 跨服务调用出现超时,排查顺序固定:防火墙端口 → 监听地址 → 容器网络 → 中间件配置

七、最后

今天折腾5个半小时,没有一行业务代码需要修改,全是环境和配置的隐性坑。

网络已通,向量模型的上下文问题还在调。这也提醒我们:工程化能力,不仅是写代码,更是在复杂环境中定位和解决问题的能力。


📚 系列导航:

【人生底稿 01】|农村少年(1995–2005)

【技术底稿】01:37岁老码农,用4台机器搭了套个人DevOps平台

【产品底稿01】37 岁 Java 老码农,用 Java 搭了个 AI 写作助手,把自己 14 年技术文章全喂给了 AI!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 3:37:50

如何快速解决Zotero PDF Translate插件兼容性问题:完整指南

如何快速解决Zotero PDF Translate插件兼容性问题:完整指南 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode.com/gh_mir…

作者头像 李华
网站建设 2026/4/26 3:35:25

如何快速永久保存QQ空间历史动态:终极完整解决方案

如何快速永久保存QQ空间历史动态:终极完整解决方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾经担心QQ空间中的珍贵记忆会随着时间流逝而消失?那些…

作者头像 李华
网站建设 2026/4/26 3:31:33

EDMA3控制器Ping-Pong缓冲技术原理与优化实践

1. EDMA3控制器中的Ping-Pong缓冲技术解析在嵌入式系统开发中,数据吞吐量和实时性往往是关键性能指标。当CPU需要同时处理数据采集和运算任务时,传统单缓冲区的串行操作方式会导致严重的性能瓶颈。我在多个DSP项目中实测发现,采用Ping-Pong缓…

作者头像 李华
网站建设 2026/4/26 3:31:01

Fillinger智能填充:Adobe Illustrator图形分布终极指南

Fillinger智能填充:Adobe Illustrator图形分布终极指南 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Adobe Illustrator中的图形排列而烦恼吗?Filli…

作者头像 李华
网站建设 2026/4/26 3:30:02

别再手动移植了!用STM32CubeIDE一键导入旧版CubeMX (.ioc)配置,省时避坑

STM32CubeIDE高效复用旧版配置:从.ioc文件一键重建工程的终极指南 面对那些躺在硬盘角落里的旧版STM32CubeMX工程文件,你是否经历过这样的困境:当需要基于已验证的稳定配置进行二次开发时,不得不手动重建所有时钟树、引脚分配和外…

作者头像 李华
网站建设 2026/4/26 3:24:23

AI Agent技能库构建:文档转Markdown的自动化工具实战

1. 项目概述与核心价值最近在折腾AI智能体(Agent)的开发,发现一个挺普遍但很棘手的问题:怎么让Agent快速、准确地“学会”使用某个工具或框架?比如,你想让一个Agent帮你写Flutter代码,或者调用某…

作者头像 李华