从零开始构建强大 AI 对话系统:ollama + deepseek + open-webui 完整部署教程(Docker 版)


前言

在现代的人工智能应用中,基于模型的对话系统和开放式网络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 安装:

    1. 配置存储库
    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
    
    1. 安装 NVIDIA 容器工具包
    sudo apt-get install -y nvidia-container-toolkit
    
  • 使用 Yum 或 Dnf 安装:

    1. 配置存储库
    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
    
    1. 安装 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 研究人员提供了一个快速、高效的对话系统解决方案,可以方便地进行自定义开发与实验。

如果有任何问题,欢迎留言讨论!