使用Docker部署ollama和MaxKB全过程
作者:炫爱小七
配置Ollama监听所有IP,修改环境变量;MaxKB容器连接Ollama,设置API地址及模型名;创建知识库并关联模型,测试问答,解决网络、模型名等问题,优化GPU加速和量化模型
步骤1:配置Ollama网络环境
确保Ollama监听外部请求
默认情况下,Ollama仅监听 127.0.0.1:11434
。需修改环境变量使其监听所有IP:
# 启动Ollama容器时添加环境变量 docker run -d --name ollama \ -p 11434:11434 \ -e OLLAMA_HOST=0.0.0.0 \ # 允许外部访问 ollama/ollama
验证Ollama服务状态
在宿主机执行以下命令,确认API可访问:
curl http://localhost:11434
若返回 Ollama is running
则正常。
步骤2:配置MaxKB连接Ollama
启动MaxKB容器并加入Ollama网络
使用 --network
参数让两个容器共享网络:
docker run -d --name maxkb \ --network container:ollama \ # 共享Ollama的网络命名空间 -p 8080:8080 \ -v ~/.maxkb:/var/lib/postgresql/data \ cr2.fit2cloud.com/1panel/maxkb
或通过Docker内部DNS通信
若未共享网络,在MaxKB容器内使用 Ollama容器名称 作为域名:
# 启动MaxKB时指定Ollama容器网络 docker run -d --name maxkb \ --network my_network \ # 创建自定义网络后加入 -p 8080:8080 \ -v ~/.maxkb:/var/lib/postgresql/data \ cr2.fit2cloud.com/1panel/maxkb
步骤3:在MaxKB中添加Ollama模型
登录MaxKB界面
访问 http://localhost:8080
,使用初始账号 admin/maxkb@123…
登录。
添加Ollama模型
- 模型类型:选择
Ollama
- API域名:填写
http://ollama:11434
(若共享网络)或http://宿主机IP:11434
- 模型名称:与
ollama list
中的模型名完全一致(如llama3:8b
) - API Key:任意非空字符(如
dummy
)
验证连接
点击 测试连接
,若显示成功即可保存。
步骤4:创建知识库并关联模型
创建知识库
上传文档(支持PDF/TXT/Markdown等),选择智能分段并导入。
创建应用
在应用中关联知识库和Ollama模型,调整参数(如温度、重复惩罚等)。
测试问答
在应用界面提问,观察是否基于知识库生成答案。
常见问题解决
API域名无效
- 确认Ollama容器IP和端口可访问:
curl http://ollama:11434
- 检查防火墙是否开放
11434
端口。
模型无法加载
- 确保模型名称与
ollama list
完全一致(区分大小写)。 - 若模型未下载,在Ollama容器内执行
ollama pull 模型名
。
跨容器网络不通
创建自定义Docker网络并加入:
docker network create my_network docker network connect my_network ollama docker network connect my_network maxkb
性能优化建议
GPU加速
启动Ollama时添加 --gpus all
参数(需宿主机安装NVIDIA驱动):
docker run -d --gpus all -p 11434:11434 ollama/ollama
模型量化
使用低精度模型(如 llama3:8b-q4_K_M
)减少资源占用:
ollama pull llama3:8b-q4_K_M
通过以上步骤,即可在Docker环境中实现MaxKB与Ollama的集成。若需进一步优化响应速度,可考虑部署更高性能的模型或升级硬件配置。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。