Ollama 和 Open-WebUI 是怎么配合的
Ollama 负责把模型跑起来,Open-WebUI 负责把交互界面补上。前者更像推理后端,后者更像日常使用的入口。两者放在 Docker 里,最直接的好处是环境干净,换机器也不用重新手工理依赖。
Ollama 的作用
Ollama 是一个轻量级的开源大语言模型运行工具,常见的 Llama 3、Mistral、Gemini 这类模型都能直接用。它把模型、依赖和推理逻辑封装在一起,启动、下载、版本管理都比较省事。对本地测试、开发验证或者搭一个私有智能应用来说,这种方式够实用。
它的工作方式也不复杂:
- 把模型运行所需的环境打包成统一格式,减少手动配置
- 根据硬件情况选择 CPU 或 GPU 推理,NVIDIA CUDA 场景下速度会更好
- 提供 REST API 和命令行接口,方便直接集成到别的程序里
- 支持容器化部署,避免宿主机依赖互相打架
Open-WebUI 的作用
Open-WebUI 是 Ollama 常见的配套前端。它把模型切换、对话记录、参数调整这些事情都放到网页里做,省掉命令行来回切换的麻烦。
它本身不负责推理,只是通过 API 跟 Ollama 通信:用户输入内容,Open-WebUI 转发给后端,拿到结果后再整理成对话展示出来。顺手把上下文、历史记录和模型管理也一起做了。放在容器里跑,和 Ollama 之间通过网络互通,搭一套完整的本地大模型环境并不费劲。
安装 Docker
1. 安装 Docker 依赖
apt-get install ca-certificates curl gnupg lsb-release
2. 添加阿里云 Docker 软件源
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
3. 配置系统软件源
编辑 /etc/apt/sources.list 文件,加入下面这些源:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# 安全更新软件源
deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
4. 添加 Docker 软件源并更新密钥
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DDCAE044F796ECB0
5. 安装 Docker
apt-get install docker-ce docker-ce-cli containerd.io
6. 验证 Docker 安装
docker -v
7. 配置 Docker 国内镜像源
7.1 编辑配置文件 /etc/docker/daemon.json
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","https://docker.m.daocloud.io","https://ghcr.io","https://mirror.baidubce.com","https://docker.nju.edu.cn"]}
7.2 重新加载并重启 Docker
systemctl daemon-reload
systemctl restart docker
安装英伟达显卡驱动和容器工具链
如果要让 Ollama 和 Open-WebUI 走 GPU,宿主机上还得把 NVIDIA 的容器支持配好。这里最关键的是 nvidia-container-toolkit,它决定了 Docker 容器能不能拿到显卡能力。
1. 配置存储库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
2. 设置源
创建并编辑 nvidia-container-toolkit.list 文件:
deb https://mirrors.ustc.edu.cn/libnvidia-container/stable/deb/$(ARCH) /
deb https://mirrors.ustc.edu.cn/libnvidia-container/stable/ubuntu18.04/$(ARCH) /
3. 更新包列表
sudo apt-get update
4. 安装 NVIDIA Container Toolkit
apt-get install -y nvidia-container-toolkit
5. 配置 Docker 以支持 Nvidia 驱动
nvidia-ctk runtime configure --runtime=docker
6. 重启 Docker 服务
systemctl restart docker.service
使用 Docker 安装 Ollama
1. 拉取 Ollama 镜像
官方镜像:
docker pull ollama/ollama:latest
国内镜像(推荐):
docker pull dhub.kubesre.xyz/ollama/ollama:latest
2. 启动 Ollama 容器
docker run -d \
--gpus=all \
--restart=always \
-v /root/project/docker/ollama:/root/project/.ollama \
-p 11434:11434 \
--name ollama \
ollama/ollama
这套挂载方式会把模型数据留在宿主机上,容器重建后不用重新拉模型。说明里提到的'保持加载在内存(显存)中',实际更偏向于启动后常驻服务的使用方式,具体表现还是看显存和模型大小。
使用 Docker 安装 Open-WebUI
1. 安装 Main 版本
docker run -d \
-p 15027:8080 \
--gpus all \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.nju.edu.cn/open-webui/open-webui:main
2. 安装 CUDA 版本(GPU 加速)
docker run -d \
-p 15027:8080 \
--gpus all \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.nju.edu.cn/open-webui/open-webui:cuda
如果机器上已经把 NVIDIA 容器环境装好了,CUDA 版本更顺手;如果只是先把界面跑起来,main 版本也能用。前提是 Ollama 后端已经正常提供服务。
3. 访问 Open-WebUI
打开浏览器访问下面地址登录:
http://192.168.1.129:15027/auth
如果页面能打开但模型列表为空,先回头检查 Ollama 容器是否在跑、端口 11434 是否可达。这个问题比前端本身更常见。
