从零搭建本地AI推理服务:Docker + Ollama + OpenWebUI 完整部署指南
你有没有发现,现在每次用AI都在给别人交&#…
你有没有发现,现在每次用AI都在给别人交”过路费”?查个资料要API Key,写个文档要联网,敏感数据还得担心有没有被拿去训练模型。
大家好,我是IT大叔。今天这篇教程,我手把手带你用三样东西——Docker、Ollama 和 OpenWebUI——在本地搭一套完全私有的AI推理服务。跑起来之后,你所有的对话都在自己机器上完成,不经过任何第三方服务器,数据100%由你掌控。
01. 为什么要在本地跑AI?
先说清楚一个问题:既然ChatGPT、DeepSeek、Gemini这些在线服务那么好用,为什么还要折腾本地?
三个核心理由:
- 隐私:企业文档、代码片段、私人笔记——这些东西你真的放心交给云端吗?本地部署意味着所有推理请求都在你的机器上完成,数据不会离开你的网络。
- 零成本长尾使用:在线API按Token计费,高强度使用时一个月几十上百美元很常见。本地部署是一次性硬件投入,模型随便跑,不心疼。
- 离线可用:断了网你的AI照样工作。对于经常出差、网络不稳定或者有安全隔离需求的场景,这是刚需。
不过也要说清楚本地部署的局限——你机器上的模型参数量通常远小于GPT-4这类云端旗舰,推理速度也受限于本地硬件(主要是显卡和内存)。但对于日常的文本总结、代码辅助、文档问答这些场景,7B-14B参数的模型完全够用。
02. 准备工作:你需要什么硬件?
这是大多数人最关心的问题。直接给结论:
- 最低配置(跑7B模型,CPU模式):4核CPU + 8GB内存 + 20GB磁盘。纯CPU推理速度较慢(约5-10 tokens/s),但能用。
- 推荐配置(跑7B-14B模型,GPU加速):NVIDIA显卡6GB+显存(如RTX 3060/4060或以上),16GB内存。GPU推理速度可达30-50 tokens/s,基本流畅。
- 豪华配置(跑30B-70B大模型):双卡或多卡,24GB+显存总量,32GB+内存。这部分属于Homelab玩家的范畴了。
今天这篇教程以”推荐配置”为准——有NVIDIA显卡的Linux机器。如果你的机器没有独立显卡也不用担心,我会标注纯CPU模式的对应操作。
软件层面只需要三样:Linux系统(Ubuntu 22.04/24.04最佳)、Docker、NVIDIA驱动(纯CPU模式可跳过)。
03. 实战部署:分四步走
第一步:安装Docker和NVIDIA Container Toolkit
# 安装Docker(Ubuntu)
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
# 退出重新登录使生效
# 安装NVIDIA Container Toolkit(GPU用户)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey |
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list |
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' |
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# 验证:GPU容器是否可用
docker run --rm --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi
注意:纯CPU用户跳过NVIDIA Toolkit步骤即可,Ollama会自动检测不到GPU后回退到CPU模式。
第二步:启动Ollama服务
# 拉取并启动Ollama容器
docker run -d --name ollama
-p 11434:11434
--gpus all
-v ollama_models:/root/.ollama
ollama/ollama
# 等待几秒让服务完全启动
sleep 5
# 拉取一个模型试试——推荐从qwen2.5:7b开始
docker exec -it ollama ollama pull qwen2.5:7b
# 测试推理
docker exec -it ollama ollama run qwen2.5:7b "用一句话解释什么是本地AI推理"
如果你没有NVIDIA GPU,去掉 --gpus all 参数即可,Ollama会自动使用CPU运行。
Ollama目前已经支持数百种模型,常用推荐:
- qwen2.5:7b(7B参数,日常使用首选,中文能力强)
- llama3.1:8b(Meta出品,英文场景表现优秀)
- deepseek-r1:7b(深度求索,推理任务标兵)
- mistral:7b(轻量高效,适合老机器)
第三步:部署OpenWebUI
Ollama只有命令行接口,不够友好。OpenWebUI给它套上一个漂亮的可视化界面,跟ChatGPT的对话体验一样顺滑。
docker run -d --name open-webui
-p 3000:8080
--add-host host.docker.internal:host-gateway
-v open-webui_data:/app/backend/data
--restart always
ghcr.io/open-webui/open-webui:main
启动后,用浏览器打开 http://你的IP:3000 。
首次访问会要求注册一个管理员账号——这个账号的信息存在本地数据库里,不经过任何第三方。注册后登录,你就会看到一个清爽的对话界面。
点击左上角模型选择下拉框,应该能自动识别到你在Ollama中拉取的 qwen2.5:7b 模型。如果没出现,等几秒刷新一下——OpenWebUI启动后会在后台自动扫描Ollama的模型列表。
第四步:进阶配置(可选但推荐)
到这里你已经有一套能用的本地AI了。如果想更顺手,推荐做这几件事:
① 配置Docker自动重启
上面的 docker run 中已经加了 --restart always,确保机器重启后服务自动恢复。如果之前没用这个参数,可以补一条:
docker update --restart always ollama
docker update --restart always open-webui
② 多模型切换
不同任务用不同模型效率更高。继续拉模型:
docker exec ollama ollama pull llama3.1:8b
docker exec ollama ollama pull deepseek-r1:7b
拉完后刷新OpenWebUI页面,模型列表就会自动更新。
③ 外网访问(请谨慎)
如果想让内网其他设备也能访问,确保两台设备在同一网段(同一路由器下),用Ollama主机的内网IP代替 localhost 即可访问 http://内网IP:3000。
警告:不要直接把端口暴露到公网! OpenWebUI没有内置的强认证机制,暴露到公网等于把AI服务向整个互联网开放。如果确实需要外网访问,请走VPN/WireGuard隧道。
04. 常见问题排查
Q:启动OpenWebUI后页面空白?
检查 docker logs open-webui 是否有错误。最常见原因是端口被占用——把 -p 3000:8080 改成 -p 3001:8080 试试。
📌 AI 服务的进一步延伸:如果想让本地 AI 配合编程工具使用,可以看看 AI编程助手横评,对比了三种方案对接本地模型的方式。
Q:Ollama拉模型很慢?
模型文件通常几GB大小,国内网络拉取可能比较慢。可以试试设置镜像源:export OLLAMA_HOST=0.0.0.0 && ollama pull qwen2.5:7b --mirror https://mirror.example.com(具体镜像源需自行寻找)。或者直接用 docker exec ollama ollama pull 时多等一会儿。
Q:纯CPU机器跑起来太慢怎么办?
尝试更小的模型,比如 qwen2.5:1.5b 或者 tinyllama:1.1b。虽然能力弱一些,但推理速度会快很多。
Q:磁盘空间不够?
模型文件默认存储在docker volume ollama_models 中。查看占用:docker system df。删除不需要的模型:docker exec ollama ollama rm qwen2.5:7b。
