上一篇 下一篇 分享链接 返回 返回顶部

用 Docker 一键搭建本地 DeepSeek:Ollama + Open WebUI 完整配置示例

发布人:慈云数据-客服中心 发布时间:6小时前 阅读量:1

DeepSeek Docker部署教程|附配置文件

随着大模型应用的普及,越来越多开发者希望在本地或私有服务器上部署 DeepSeek 系列模型,用于代码生成、知识问答、文档处理、企业内部助手等场景。相比直接调用公网 API,本地化部署具有数据可控、隐私安全、可离线运行、便于二次开发等优势。

本文将以 Docker / Docker Compose 的方式,介绍如何快速部署 DeepSeek 模型,并提供可直接使用的配置文件。为了降低部署难度,本文采用目前较为常见的方案:

Ollama + DeepSeek 模型 + Open WebUI

其中:

  • Ollama:负责本地大模型的下载、加载与推理服务;
  • DeepSeek 模型:本文以 deepseek-r1 为例;
  • Open WebUI:提供类似 ChatGPT 的网页聊天界面;
  • Docker Compose:统一管理服务,方便启动、停止和迁移。

一、部署方案说明

DeepSeek 模型本身并不是一个传统意义上的 Web 服务,它通常需要通过模型运行框架来加载。常见的运行方式包括:

  • Ollama
  • vLLM
  • llama.cpp
  • Text Generation Inference
  • LM Studio
  • API 云服务调用

如果你的目标是 快速在本地服务器上跑起来,并提供 Web 聊天页面,那么 Ollama 是非常适合入门和轻量级使用的方案。

本文部署完成后,你将获得:

  1. 一个本地 DeepSeek 推理服务;
  2. 一个可视化 Web 聊天页面;
  3. 可通过浏览器访问;
  4. 可使用 Docker Compose 一键启动;
  5. 配置文件可迁移到其他服务器。

二、服务器环境要求

1. 基础环境

建议服务器满足以下条件:

项目 建议配置
操作系统 Ubuntu 20.04 / 22.04 / Debian / CentOS
CPU 4 核及以上
内存 8GB 起步,推荐 16GB 以上
磁盘 至少 20GB 可用空间
Docker 20.10+
Docker Compose v2 版本
GPU 可选,NVIDIA GPU 效果更好

如果只是体验小参数量模型,CPU 也可以运行,但推理速度会比较慢。如果用于日常问答或多人使用,推荐使用 NVIDIA GPU。


三、安装 Docker 和 Docker Compose

如果你的服务器还没有安装 Docker,可以使用以下命令安装。

1. Ubuntu / Debian 安装 Docker

curl -fsSL https://get.docker.com | bash

安装完成后,启动 Docker:

systemctl enable docker
systemctl start docker

查看 Docker 版本:

docker version

查看 Docker Compose 版本:

docker compose version

如果能正常显示版本号,说明安装成功。


四、创建项目目录

建议将 DeepSeek 相关配置统一放在一个目录下,例如:

mkdir -p /opt/deepseek-docker
cd /opt/deepseek-docker

后续的 docker-compose.yml、数据目录、模型数据都会放在这里,方便管理和备份。


五、Docker Compose 配置文件

下面是一个完整的 Docker Compose 配置文件,包含:

  • Ollama 服务;
  • Open WebUI 服务;
  • 数据持久化目录;
  • 容器自动重启;
  • Web 页面端口映射。

/opt/deepseek-docker 目录下创建文件:

vim docker-compose.yml

写入以下内容:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: deepseek-ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ./ollama:/root/.ollama
    environment:
      - OLLAMA_HOST=0.0.0.0
    networks:
      - deepseek-net

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: deepseek-webui
    restart: unless-stopped
    ports:
      - "3000:8080"
    volumes:
      - ./open-webui:/app/backend/data
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_NAME=DeepSeek Local Chat
    depends_on:
      - ollama
    networks:
      - deepseek-net

networks:
  deepseek-net:
    driver: bridge

保存后退出。


六、启动 DeepSeek 服务

在项目目录下执行:

docker compose up -d

查看容器状态:

docker ps

正常情况下,你会看到两个容器:

deepseek-ollama
deepseek-webui

也可以查看日志:

docker logs -f deepseek-ollama
docker logs -f deepseek-webui

如果没有明显报错,说明基础服务已经启动成功。


七、下载 DeepSeek 模型

Ollama 启动后,还需要拉取 DeepSeek 模型。可以进入 Ollama 容器执行:

docker exec -it deepseek-ollama bash

然后拉取模型:

ollama pull deepseek-r1:7b

如果服务器配置较低,可以使用更小的模型,例如:

ollama pull deepseek-r1:1.5b

如果服务器资源较好,也可以尝试更大的模型:

ollama pull deepseek-r1:8b

或者根据 Ollama 官方模型库支持情况选择其他标签。

查看已下载模型:

ollama list

测试模型是否可用:

ollama run deepseek-r1:7b

输入一个问题,例如:

请用中文介绍一下 Docker 的作用。

如果模型正常回复,说明 DeepSeek 已经成功部署。

退出容器:

exit

八、访问 Open WebUI 页面

在浏览器中访问:

http://服务器IP:3000

首次访问时,Open WebUI 会要求创建管理员账号。按照页面提示填写用户名、邮箱和密码即可。

登录后,进入聊天页面,在模型列表中选择:

deepseek-r1:7b

然后即可开始对话。

如果模型列表中没有显示,可以检查:

  1. Ollama 模型是否下载成功;
  2. Open WebUI 是否能访问 Ollama;
  3. OLLAMA_BASE_URL 是否配置正确;
  4. 容器是否在同一个 Docker 网络中。

九、支持 NVIDIA GPU 的配置方式

如果你的服务器有 NVIDIA 显卡,并且希望 Ollama 使用 GPU 加速,需要先安装 NVIDIA Container Toolkit。

1. 检查显卡驱动

nvidia-smi

如果能看到显卡信息,说明驱动正常。

2. 安装 NVIDIA Container Toolkit

Ubuntu 可参考以下命令:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

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/$distribution/libnvidia-container.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 update
sudo apt install -y nvidia-container-toolkit

配置 Docker:

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

3. GPU 版 docker-compose.yml

如果需要 GPU 支持,可以将 Ollama 服务修改为以下形式:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: deepseek-ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ./ollama:/root/.ollama
    environment:
      - OLLAMA_HOST=0.0.0.0
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    networks:
      - deepseek-net

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: deepseek-webui
    restart: unless-stopped
    ports:
      - "3000:8080"
    volumes:
      - ./open-webui:/app/backend/data
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_NAME=DeepSeek Local Chat
    depends_on:
      - ollama
    networks:
      - deepseek-net

networks:
  deepseek-net:
    driver: bridge

修改完成后重新启动:

docker compose down
docker compose up -d

查看 Ollama 日志:

docker logs -f deepseek-ollama

如果 GPU 配置正常,推理时通常会明显比 CPU 更快。


十、配置反向代理和域名访问

如果你希望通过域名访问 Open WebUI,例如:

https://deepseek.example.com

可以使用 Nginx 做反向代理。

1. Nginx 配置示例

创建配置文件:

vim /etc/nginx/conf.d/deepseek.conf

写入:

server {
    listen 80;
    server_name deepseek.example.com;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 3600;
        proxy_send_timeout 3600;
    }
}

检查配置:

nginx -t

重载 Nginx:

systemctl reload nginx

如果需要 HTTPS,可以使用 Certbot 申请证书:

apt install -y certbot python3-certbot-nginx
certbot --nginx -d deepseek.example.com

十一、常用管理命令

1. 启动服务

docker compose up -d

2. 停止服务

docker compose down

3. 重启服务

docker compose restart

4. 查看日志

docker compose logs -f

查看指定容器日志:

docker logs -f deepseek-ollama
docker logs -f deepseek-webui

5. 查看模型列表

docker exec -it deepseek-ollama ollama list

6. 删除模型

例如删除 deepseek-r1:7b

docker exec -it deepseek-ollama ollama rm deepseek-r1:7b

7. 更新镜像

docker compose pull
docker compose up -d

十二、目录结构说明

部署完成后,项目目录大致如下:

/opt/deepseek-docker
├── docker-compose.yml
├── ollama
│   └── models
└── open-webui
    └── ...

其中:

目录 说明
docker-compose.yml 服务编排配置文件
ollama Ollama 数据目录,包含模型文件
open-webui Open WebUI 数据目录,包含用户、配置、聊天记录等

如果需要迁移服务器,可以停止服务后打包该目录:

cd /opt
tar -czvf deepseek-docker.tar.gz deepseek-docker

迁移到新服务器后解压,再执行:

docker compose up -d

十三、安全建议

如果部署在公网服务器上,建议做好安全配置。

1. 不建议直接暴露 Ollama 端口

Ollama 默认端口是 11434。如果不需要外部程序直接调用 Ollama API,建议不要暴露到公网。

可以将 Compose 中的:

ports:
  - "11434:11434"

改为:

ports:
  - "127.0.0.1:11434:11434"

或者直接不映射端口,仅供 Docker 内部网络访问。

2. Open WebUI 设置强密码

Open WebUI 首次注册的用户通常会成为管理员。请务必使用复杂密码,避免被爆破。

3. 配置防火墙

例如只开放 80、443、22 端口:

ufw allow 22
ufw allow 80
ufw allow 443
ufw enable

如果直接通过 3000 端口访问,也需要开放:

ufw allow 3000

但生产环境更推荐通过 Nginx + HTTPS 访问。


十四、常见问题排查

1. 页面能打开,但没有模型

检查模型是否已下载:

docker exec -it deepseek-ollama ollama list

如果没有模型,需要执行:

docker exec -it deepseek-ollama ollama pull deepseek-r1:7b

2. Open WebUI 连接 Ollama 失败

检查 Compose 配置中的环境变量:

OLLAMA_BASE_URL=http://ollama:11434

这里的 ollama 是 Docker Compose 中的服务名,不是容器名,也不是服务器 IP。

然后查看网络:

docker network ls
docker inspect deepseek-ollama
docker inspect deepseek-webui

确认两个容器在同一个网络中。

3. 模型回复很慢

可能原因包括:

  • 使用 CPU 推理;
  • 模型参数量过大;
  • 服务器内存不足;
  • 磁盘性能较差;
  • 并发请求过多。

解决方案:

  1. 使用更小模型,例如 deepseek-r1:1.5b
  2. 启用 NVIDIA GPU;
  3. 增加内存;
  4. 使用 SSD;
  5. 减少上下文长度和并发数。

4. 拉取模型失败

可能是网络问题。可以尝试:

docker exec -it deepseek-ollama ollama pull deepseek-r1:7b

如果长时间无响应,可以检查服务器是否能访问 Ollama 模型仓库,或者配置代理。

5. Docker Compose 启动失败

查看详细日志:

docker compose logs -f

常见原因包括:

  • 端口被占用;
  • Docker 未启动;
  • 配置文件缩进错误;
  • 镜像下载失败;
  • 磁盘空间不足。

检查端口占用:

ss -tunlp | grep 3000
ss -tunlp | grep 11434

十五、推荐的生产环境配置

如果用于个人学习,上面的配置已经足够。如果用于团队或企业内部,建议增加以下配置:

  1. 使用 HTTPS;
  2. 配置访问控制;
  3. 关闭 Ollama 公网端口;
  4. 定期备份 Open WebUI 数据;
  5. 控制模型大小和并发;
  6. 配置日志轮转;
  7. 使用独立数据盘存储模型;
  8. 对服务器进行基础安全加固。

可以为 Docker 配置日志大小限制,避免日志撑满磁盘:

logging:
  driver: json-file
  options:
    max-size: "100m"
    max-file: "3"

例如添加到服务中:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: deepseek-ollama
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-size: "100m"
        max-file: "3"

十六、完整推荐版 docker-compose.yml

下面给出一个更适合长期使用的完整配置文件:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: deepseek-ollama
    restart: unless-stopped
    ports:
      - "127.0.0.1:11434:11434"
    volumes:
      - ./ollama:/root/.ollama
    environment:
      - OLLAMA_HOST=0.0.0.0
      - TZ=Asia/Shanghai
    logging:
      driver: json-file
      options:
        max-size: "100m"
        max-file: "3"
    networks:
      - deepseek-net

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: deepseek-webui
    restart: unless-stopped
    ports:
      - "3000:8080"
    volumes:
      - ./open-webui:/app/backend/data
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_NAME=DeepSeek Local Chat
      - TZ=Asia/Shanghai
    depends_on:
      - ollama
    logging:
      driver: json-file
      options:
        max-size: "100m"
        max-file: "3"
    networks:
      - deepseek-net

networks:
  deepseek-net:
    driver: bridge

如果服务器支持 NVIDIA GPU,可以在 ollama 服务中额外加入:

deploy:
  resources:
    reservations:
      devices:
        - driver: nvidia
          count: all
          capabilities: [gpu]

十七、总结

通过本文的步骤,我们完成了基于 Docker 的 DeepSeek 本地化部署。整体流程可以概括为:

  1. 安装 Docker 和 Docker Compose;
  2. 创建项目目录;
  3. 编写 docker-compose.yml
  4. 启动 Ollama 和 Open WebUI;
  5. 拉取 DeepSeek 模型;
  6. 通过浏览器访问 WebUI;
  7. 根据需要配置 GPU、域名、HTTPS 和安全策略。

对于个人用户而言,Ollama + DeepSeek + Open WebUI 是非常友好的本地大模型部署方案,安装简单、维护方便、界面直观。对于企业或团队用户,则建议在此基础上进一步加强权限控制、访问安全、日志管理和资源监控。

只要服务器资源足够,使用 Docker 部署 DeepSeek 可以快速搭建一个私有 AI 助手,为代码开发、文档问答、知识库检索和自动化办公提供基础能力。

目录结构
全文