文章目录
前言
在现代的人工智能应用中,基于模型的对话系统和开放式网络UI正逐渐成为越来越多企业和开发者的选择。本篇博文将为您详细讲解如何通过 Docker 部署 ollama、deepseek 和 open-webui,并结合使用 Docker Compose 实现更加高效、便捷的管理。
AI 模型分享、讨论、下载,开放社区 Hugging Face 里面可以找到很多建议
一、工具简介
在开始之前,我们先了解一下每个工具的功能和作用:
ollama
- ollama 是一个强大的对话生成模型,它支持多种自然语言处理任务,包括对话生成、问答、文本总结等。通过容器化部署,ollama 可以轻松地集成到开发环境中,提供一个灵活、可扩展的对话服务。
deepseek
- deepseek 是一个基于深度学习的语义理解模型,通常与对话系统一起使用。它能够根据用户的输入快速生成符合语义逻辑的回答,从而增强对话系统的准确性和响应速度。在本教程中,我们通过 ollama 运行 deepseek 模型,提供强大的对话能力。
open-webui
- open-webui 是一个开源的 Web 界面,用于与 AI 模型进行交互。通过它,用户可以通过浏览器与部署的 AI 模型进行实时对话,查看模型的输出结果。open-webui 提供了一个简洁、易用的 UI,方便用户快速集成和管理对话系统。
二、前期准备
在开始部署之前,首先确保系统中已安装好 Docker。若尚未安装,可以参考以下教程:
Windows 系统 Docker 安装教程(菜鸟教程)
Docker 是一个基于容器的轻量级虚拟化平台,能够帮助我们更轻松地部署和运行应用。
三、部署步骤
1. 安装并配置 ollama
可参考:
ollama 是一个强大的对话生成模型,支持多个版本的对话能力。在 Docker 中部署 ollama 是十分简单的。我们首先需要从 Docker Hub 上拉取 ollama 的镜像。
使用 CPU 运行
用如下命令,可以直接跑在 CPU
上:
docker run -d -v D:/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
-d
:后台运行容器
-v D:/ollama:/root/.ollama
:将本地文件夹挂载到容器内
-p 11434:11434
:映射端口,方便外部访问
--name ollama
:容器名称
ollama/ollama
:镜像名
部署完成后,执行以下命令启动 deepseek 模型:
docker exec -it ollama ollama run deepseek-r1:1.5b
此时,系统已启动,进入容器后,你可以看到一个 >>>
的提示符,表示可以开始与模型进行对话了。
使用 GPU 运行
安装 NVIDIA 驱动
请参考 Ubuntu 安装 NVIDIA 驱动实操指南(含卸载)
安装 NVIDIA 容器工具包
-
使用 Apt 安装:
- 配置存储库
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
- 安装 NVIDIA 容器工具包
sudo apt-get install -y nvidia-container-toolkit
-
使用 Yum 或 Dnf 安装:
- 配置存储库
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \ | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
- 安装 NVIDIA 容器工具包
sudo yum install -y nvidia-container-toolkit
配置 Docker 使用 Nvidia 驱动
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
启动容器:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
配置 AMD GPU
使用 AMD GPU 启动 ollama 时,可以使用 rocm 标签,并执行以下命令:
docker run -d --device /dev/kfd --device /dev/dri -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:rocm
2. 本地运行模型
现在可以运行模型了:
docker exec -it ollama ollama run deepseek-r1:1.5b
2. 部署 open-webui
接下来,我们将部署 open-webui,它是一个用于与 AI 模型交互的 Web 界面。只需要执行以下命令即可启动:
docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=http://192.168.x.x:11434 -v D:/open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
-p 3000:8080
:将容器的 8080 端口映射到宿主机的 3000 端口
-e OLLAMA_BASE_URL=http://192.168.x.x:11434
:配置 ollama 服务的基础 URL 地址(此处 192.168.x.x 请替换为本机 IP 地址)
-v D:/open-webui:/app/backend/data
:挂载本地目录到容器
--name open-webui
:容器名称
--restart always
:容器异常退出后自动重启
可使用 ip a
(Linux)或 ipconfig
(Windows)命令查看本机 ip
地址。
四、调试与验证
完成部署后,可以通过浏览器访问 http://localhost:3000
进入 open-webui。在这个 Web 界面上,你可以与 deepseek 模型进行交互。
登录进去后,左上角选择模型。
五、Docker Compose 简化部署
为了让部署过程更加自动化和易于管理,我们可以将以上命令封装到一个 docker-compose.yml
文件中。通过 Docker Compose,我们可以实现一次性启动整个应用栈。
以下是 docker-compose.yml
文件的示例:
version: '3'
services:
ollama:
image: ollama/ollama:0.5.8
container_name: ollama
volumes:
- ./ollama:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: ["gpu"]
count: all # 调整数量以匹配你希望使用的 GPU 数量
ports:
- "11434:11434"
restart: always
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
- ./open-webui:/app/backend/data
restart: always # 可以选择是否需要重启策略
在文件夹中创建 docker-compose.yml
,然后执行以下命令启动所有服务:
docker-compose up -d
Docker Compose 会根据 docker-compose.yml
文件自动拉取镜像、创建容器并启动服务。你只需要专注于应用的业务逻辑,无需手动管理每个容器。
然后再执行:
docker exec -it ollama ollama run deepseek-r1:1.5b
如果跑 CPU 的话,那就把这段删掉就好了:
deploy: resources: reservations: devices: - driver: nvidia capabilities: ["gpu"] count: all # 调整数量以匹配你希望使用的 GPU 数量
六、注意事项与常见问题
发现实在是太多内容了,单独拎出来另写一篇博文了
部署 ollama + deepseek + open-webui 遇到的常见问题与解决建议
六、总结
通过以上步骤,我们已经成功地在 Docker 中部署了 ollama、deepseek 和 open-webui,并通过 Docker Compose 优化了整个部署过程。这一组合为开发者和 AI 研究人员提供了一个快速、高效的对话系统解决方案,可以方便地进行自定义开发与实验。
如果有任何问题,欢迎留言讨论!