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

用 Docker 跑 DeepSeek:从安装到 WebUI 的完整部署命令包

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

DeepSeek Docker部署教程|附完整命令

近年来,DeepSeek 系列大模型凭借较强的推理能力、代码能力以及较高的性价比,受到了很多开发者和企业用户的关注。对于个人学习、私有化测试、企业内部知识库或本地智能助手场景来说,将 DeepSeek 模型部署到自己的服务器上,是一个非常实用的选择。

本文将以 Docker 部署 DeepSeek 为主线,介绍如何在 Linux 服务器上通过 Docker 快速运行 DeepSeek 模型,并提供从环境准备、Docker 安装、Ollama 部署、DeepSeek 模型拉取、API 调用、WebUI 可视化界面部署到常见问题排查的完整命令。

说明:本文主要采用 Ollama + Docker 的方式部署 DeepSeek。本方案适合个人开发者、测试环境以及中小规模私有化使用。如果你需要大规模生产部署,可以进一步考虑 vLLM、TensorRT-LLM、Kubernetes、GPU 集群等方案。


一、部署方案说明

目前在本地或服务器上运行 DeepSeek 模型,常见方式包括:

  1. Ollama 部署

    • 上手简单
    • 命令少
    • 支持 Docker
    • 适合本地开发和中小规模测试
  2. vLLM 部署

    • 性能较高
    • 适合 API 服务化
    • 更偏生产环境
    • 对显卡资源和模型文件管理要求更高
  3. Transformers 原生部署

    • 灵活度高
    • 适合研究和二次开发
    • 配置相对复杂
  4. 第三方 API 调用

    • 无需本地部署
    • 成本按量计费
    • 数据需要传输到外部服务

本文选择 Ollama + Docker,原因是部署成本低、稳定性较好,并且可以通过简单命令拉取并运行 DeepSeek 模型。


二、服务器配置建议

DeepSeek 有多个不同参数规模的模型,例如 1.5B、7B、8B、14B、32B、70B 等。模型越大,对硬件要求越高。

1. 基础配置建议

使用场景 CPU 内存 GPU 推荐模型
简单体验 2核以上 4GB以上 非必须 deepseek-r1:1.5b
日常问答 4核以上 8GB以上 非必须 deepseek-r1:7b
代码辅助 8核以上 16GB以上 建议 deepseek-coder / 7b
较强推理 16核以上 32GB以上 建议 12GB+ 显存 deepseek-r1:14b
高质量推理 32核以上 64GB以上 建议 24GB+ 显存 deepseek-r1:32b

如果没有 GPU,也可以使用 CPU 运行小参数模型,但推理速度会明显变慢。对于个人测试,建议从 deepseek-r1:1.5bdeepseek-r1:7b 开始。


三、系统环境准备

本文以 Ubuntu 22.04 为例,其他 Linux 发行版命令类似。

先更新系统软件包:

sudo apt update
sudo apt upgrade -y

安装常用工具:

sudo apt install -y curl wget git vim lsof net-tools ca-certificates gnupg

查看系统信息:

uname -a
lsb_release -a

查看 CPU 和内存:

lscpu
free -h

如果你的服务器有 NVIDIA GPU,可以使用以下命令查看显卡:

nvidia-smi

如果提示 command not found,说明可能没有安装 NVIDIA 驱动,或者服务器本身没有 NVIDIA 显卡。


四、安装 Docker

如果服务器已经安装 Docker,可以跳过本步骤。

1. 卸载旧版本 Docker

sudo apt remove -y docker docker-engine docker.io containerd runc

2. 安装 Docker 官方源

sudo apt update
sudo apt install -y ca-certificates curl gnupg

创建密钥目录:

sudo install -m 0755 -d /etc/apt/keyrings

添加 Docker GPG 密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

设置权限:

sudo chmod a+r /etc/apt/keyrings/docker.gpg

添加 Docker 软件源:

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新软件源:

sudo apt update

3. 安装 Docker Engine

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4. 启动 Docker

sudo systemctl enable docker
sudo systemctl start docker

查看 Docker 版本:

docker version

查看 Docker Compose 版本:

docker compose version

5. 将当前用户加入 Docker 用户组

如果不想每次执行 Docker 命令都输入 sudo,可以执行:

sudo usermod -aG docker $USER

然后退出终端重新登录,或者执行:

newgrp docker

测试 Docker 是否正常:

docker run hello-world

如果能够看到 Hello from Docker!,说明 Docker 安装成功。


五、使用 Docker 部署 Ollama

Ollama 是一个非常方便的大模型运行工具,可以通过简单命令拉取和运行模型。我们可以直接用 Docker 启动 Ollama 服务。

1. 创建数据目录

建议将 Ollama 数据挂载到宿主机目录,避免容器删除后模型文件丢失。

mkdir -p ~/ollama

也可以放到服务器数据盘,例如:

sudo mkdir -p /data/ollama
sudo chown -R $USER:$USER /data/ollama

下面以 /data/ollama 为例。


六、CPU 模式部署 DeepSeek

如果你的服务器没有 NVIDIA GPU,可以直接使用 CPU 模式运行 Ollama。

1. 启动 Ollama 容器

docker run -d \
  --name ollama \
  -p 11434:11434 \
  -v /data/ollama:/root/.ollama \
  --restart always \
  ollama/ollama:latest

参数说明:

参数 说明
-d 后台运行容器
--name ollama 容器名称为 ollama
-p 11434:11434 将容器 11434 端口映射到宿主机
-v /data/ollama:/root/.ollama 挂载模型数据目录
--restart always 容器异常退出或服务器重启后自动启动
ollama/ollama:latest Ollama 官方镜像

查看容器运行状态:

docker ps

查看 Ollama 日志:

docker logs -f ollama

七、GPU 模式部署 DeepSeek

如果你的服务器有 NVIDIA GPU,建议使用 GPU 加速。这样模型推理速度会明显提升。

1. 安装 NVIDIA 驱动

不同服务器环境安装方式可能不同。Ubuntu 可以使用以下命令查看推荐驱动:

ubuntu-drivers devices

安装推荐驱动:

sudo ubuntu-drivers autoinstall

安装完成后重启服务器:

sudo reboot

重启后检查:

nvidia-smi

如果能够看到 GPU 型号、显存和驱动版本,说明驱动正常。

2. 安装 NVIDIA Container Toolkit

添加 NVIDIA 官方 GPG key:

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 update

安装工具:

sudo apt install -y nvidia-container-toolkit

配置 Docker 使用 NVIDIA 运行时:

sudo nvidia-ctk runtime configure --runtime=docker

重启 Docker:

sudo systemctl restart docker

测试 Docker 是否可以调用 GPU:

docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi

如果容器内也能显示 GPU 信息,说明 GPU 容器环境配置成功。

3. GPU 模式启动 Ollama

如果之前已经启动过 CPU 版本容器,先停止并删除:

docker stop ollama
docker rm ollama

使用 GPU 启动:

docker run -d \
  --gpus all \
  --name ollama \
  -p 11434:11434 \
  -v /data/ollama:/root/.ollama \
  --restart always \
  ollama/ollama:latest

查看日志:

docker logs -f ollama

八、拉取 DeepSeek 模型

Ollama 容器启动后,就可以拉取 DeepSeek 模型。

进入容器:

docker exec -it ollama bash

拉取较小的 DeepSeek R1 1.5B 模型:

ollama pull deepseek-r1:1.5b

如果你的机器配置较好,可以拉取 7B 模型:

ollama pull deepseek-r1:7b

也可以拉取 8B 模型:

ollama pull deepseek-r1:8b

如果需要更强推理能力,可以尝试:

ollama pull deepseek-r1:14b

或者:

ollama pull deepseek-r1:32b

查看已安装模型:

ollama list

退出容器:

exit

也可以不进入容器,直接在宿主机执行:

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

查看模型列表:

docker exec -it ollama ollama list

九、运行 DeepSeek 对话测试

模型下载完成后,可以直接运行:

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

然后输入问题,例如:

请用通俗语言解释一下什么是 Docker?

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

如果你部署的是 1.5B 模型,则运行:

docker exec -it ollama ollama run deepseek-r1:1.5b

如果部署的是 14B 模型,则运行:

docker exec -it ollama ollama run deepseek-r1:14b

十、通过 API 调用 DeepSeek

Ollama 默认提供 HTTP API,端口为 11434。由于前面已经映射了端口,所以可以直接通过宿主机访问。

1. 测试模型生成接口

使用 curl 调用:

curl http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-r1:7b",
    "prompt": "请写一段 Python 代码,实现快速排序。",
    "stream": false
  }'

如果返回 JSON 数据,并且包含模型生成文本,说明 API 正常。

2. 流式输出接口

如果希望流式返回:

curl http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-r1:7b",
    "prompt": "请解释一下 HTTP 和 HTTPS 的区别。",
    "stream": true
  }'

3. 聊天接口调用

Ollama 也支持 chat 格式接口:

curl http://localhost:11434/api/chat \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-r1:7b",
    "messages": [
      {
        "role": "system",
        "content": "你是一个专业的中文技术助手。"
      },
      {
        "role": "user",
        "content": "请介绍一下 Docker Compose 的作用。"
      }
    ],
    "stream": false
  }'

十一、使用 Python 调用 DeepSeek API

如果你希望在 Python 项目中调用本地 DeepSeek,可以使用 requests

1. 安装 requests

pip install requests

2. Python 示例代码

创建文件:

vim deepseek_test.py

写入以下内容:

import requests

url = "http://localhost:11434/api/chat"

payload = {
    "model": "deepseek-r1:7b",
    "messages": [
        {
            "role": "system",
            "content": "你是一个专业的中文技术助手。"
        },
        {
            "role": "user",
            "content": "请用简单的话解释什么是大语言模型。"
        }
    ],
    "stream": False
}

response = requests.post(url, json=payload)
print(response.json()["message"]["content"])

运行:

python deepseek_test.py

如果你的 API 服务部署在远程服务器上,需要将 localhost 替换为服务器 IP:

url = "http://服务器IP:11434/api/chat"

十二、使用 Docker Compose 部署 Ollama

如果你希望更方便地管理服务,推荐使用 Docker Compose。

1. 创建目录

mkdir -p ~/deepseek-docker
cd ~/deepseek-docker

2. 编写 docker-compose.yml

CPU 版本:

vim docker-compose.yml

写入:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - /data/ollama:/root/.ollama
    restart: always

启动服务:

docker compose up -d

查看服务:

docker compose ps

拉取模型:

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

运行测试:

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

3. GPU 版本 docker-compose.yml

如果需要 GPU 版本,可以使用如下配置:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - /data/ollama:/root/.ollama
    restart: always
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

启动:

docker compose up -d

查看日志:

docker compose logs -f

如果 Compose 的 GPU 配置不生效,也可以使用 docker run --gpus all 的方式启动,通常更直接。


十三、部署 Open WebUI 可视化界面

命令行虽然方便,但如果你希望像 ChatGPT 一样通过网页聊天,可以部署 Open WebUI。

Open WebUI 是一个开源的 Web 界面,支持连接 Ollama,非常适合私有化大模型聊天场景。

1. 启动 Open WebUI

确保 Ollama 容器已经启动,然后执行:

docker run -d \
  --name open-webui \
  -p 3000:8080 \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  -v open-webui:/app/backend/data \
  --add-host=host.docker.internal:host-gateway \
  --restart always \
  ghcr.io/open-webui/open-webui:main

访问地址:

http://服务器IP:3000

首次进入需要注册管理员账号。注册完成后,在模型列表中选择 DeepSeek 模型即可开始对话。

2. 如果 Ollama 和 Open WebUI 使用同一 Docker 网络

也可以创建一个专用网络:

docker network create deepseek-net

将 Ollama 连接到该网络:

docker network connect deepseek-net ollama

启动 Open WebUI:

docker run -d \
  --name open-webui \
  --network deepseek-net \
  -p 3000:8080 \
  -e OLLAMA_BASE_URL=http://ollama:11434 \
  -v open-webui:/app/backend/data \
  --restart always \
  ghcr.io/open-webui/open-webui:main

十四、Ollama + Open WebUI 的 Docker Compose 完整配置

如果你希望一次性部署 Ollama 和 Open WebUI,可以使用以下 docker-compose.yml

创建目录:

mkdir -p ~/deepseek-stack
cd ~/deepseek-stack

编辑文件:

vim docker-compose.yml

CPU 版本完整配置:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - /data/ollama:/root/.ollama
    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
    depends_on:
      - ollama
    restart: always

volumes:
  open-webui:

GPU 版本完整配置:

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - /data/ollama:/root/.ollama
    restart: always
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

  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
    depends_on:
      - ollama
    restart: always

volumes:
  open-webui:

启动:

docker compose up -d

查看容器:

docker compose ps

拉取模型:

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

访问 WebUI:

http://服务器IP:3000

十五、开放远程访问端口

如果你在云服务器上部署,需要确认安全组和防火墙允许访问端口。

常用端口:

服务 端口
Ollama API 11434
Open WebUI 3000

如果使用 UFW 防火墙,可以执行:

sudo ufw allow 11434/tcp
sudo ufw allow 3000/tcp
sudo ufw reload

查看防火墙状态:

sudo ufw status

不过需要注意,不建议直接将 Ollama API 的 11434 端口暴露到公网。因为 Ollama 默认没有复杂鉴权机制,如果直接公网开放,可能存在被滥用风险。

更推荐的方式是:

  1. 只开放 Open WebUI 的 3000 端口;
  2. 给 WebUI 配置登录账号;
  3. 使用 Nginx 反向代理并配置 HTTPS;
  4. 对 API 服务增加鉴权;
  5. 在安全组中限制访问 IP。

十六、常用管理命令汇总

1. 查看 Ollama 容器

docker ps | grep ollama

2. 查看日志

docker logs -f ollama

3. 停止容器

docker stop ollama

4. 启动容器

docker start ollama

5. 重启容器

docker restart ollama

6. 删除容器

docker rm -f ollama

7. 查看模型列表

docker exec -it ollama ollama list

8. 删除模型

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

9. 拉取模型

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

10. 运行模型

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

11. 查看 Docker 占用空间

docker system df

12. 清理未使用镜像和缓存

docker system prune -a

注意:该命令会删除未使用的镜像、容器和缓存,执行前请确认不会误删重要内容。


十七、常见问题与解决方法

问题一:模型下载很慢怎么办?

可以尝试以下方法:

  1. 更换网络环境;
  2. 使用海外服务器;
  3. 保持容器运行并等待下载完成;
  4. 选择更小的模型,例如 deepseek-r1:1.5b
  5. 检查磁盘空间是否充足。

查看磁盘空间:

df -h

查看 Ollama 数据目录大小:

du -sh /data/ollama

问题二:运行模型时内存不足怎么办?

如果出现内存不足、容器退出、响应极慢等问题,通常是模型太大导致的。

解决方法:

  1. 换用更小模型;
  2. 增加服务器内存;
  3. 使用 GPU;
  4. 关闭其他占用内存的服务;
  5. 检查是否有 swap。

查看内存:

free -h

创建 8GB swap:

sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

设置开机自动挂载:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

问题三:Docker 容器无法使用 GPU

先确认宿主机 GPU 正常:

nvidia-smi

再确认容器能访问 GPU:

docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi

如果失败,通常需要检查:

  1. NVIDIA 驱动是否安装;
  2. NVIDIA Container Toolkit 是否安装;
  3. Docker 是否重启;
  4. 启动容器时是否加了 --gpus all

问题四:Open WebUI 无法连接 Ollama

先确认 Ollama 正常:

curl http://localhost:11434/api/tags

如果 Open WebUI 和 Ollama 是两个容器,需要确认网络配置是否正确。

查看容器网络:

docker inspect open-webui
docker inspect ollama

如果使用同一网络,Open WebUI 中的地址应配置为:

http://ollama:11434

如果通过宿主机访问,可以配置为:

http://host.docker.internal:11434

Linux 下通常还需要添加:

--add-host=host.docker.internal:host-gateway

问题五:API 无法从外部访问

确认服务监听端口:

ss -lntp | grep 11434

确认 Docker 端口映射:

docker ps

确认防火墙:

sudo ufw status

确认云服务器安全组已经开放对应端口。


十八、安全建议

在实际使用中,安全非常重要。尤其是当服务运行在公网服务器上时,不建议裸露大模型 API。

建议采取以下措施:

  1. 不要直接公网暴露 11434 端口

    • Ollama API 默认没有完整的认证体系;
    • 暴露公网可能导致接口被他人调用。
  2. 使用 Open WebUI 作为入口

    • 配置用户登录;
    • 使用管理员账号管理模型。
  3. 使用 Nginx 反向代理

    • 配置 HTTPS;
    • 可以增加 Basic Auth;
    • 可以限制访问来源。
  4. 限制安全组访问 IP

    • 只允许公司办公 IP 或个人固定 IP 访问。
  5. 定期更新镜像

    • 更新 Ollama:
    docker pull ollama/ollama:latest
    docker restart ollama

    更新 Open WebUI:

    docker pull ghcr.io/open-webui/open-webui:main
    docker restart open-webui

十九、一键部署命令示例

如果你只是想快速体验,可以直接执行以下命令。

CPU 一键部署

sudo mkdir -p /data/ollama

docker run -d \
  --name ollama \
  -p 11434:11434 \
  -v /data/ollama:/root/.ollama \
  --restart always \
  ollama/ollama:latest

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

docker exec -it ollama ollama run deepseek-r1:1.5b

GPU 一键部署

前提是已经安装好 NVIDIA 驱动和 NVIDIA Container Toolkit。

sudo mkdir -p /data/ollama

docker run -d \
  --gpus all \
  --name ollama \
  -p 11434:11434 \
  -v /data/ollama:/root/.ollama \
  --restart always \
  ollama/ollama:latest

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

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

WebUI 一键部署

docker run -d \
  --name open-webui \
  -p 3000:8080 \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  -v open-webui:/app/backend/data \
  --add-host=host.docker.internal:host-gateway \
  --restart always \
  ghcr.io/open-webui/open-webui:main

访问:

http://服务器IP:3000

二十、总结

通过本文的步骤,我们完成了 DeepSeek 的 Docker 私有化部署,核心流程可以概括为:

  1. 安装 Docker;
  2. 启动 Ollama 容器;
  3. 拉取 DeepSeek 模型;
  4. 使用命令行测试对话;
  5. 通过 API 调用模型;
  6. 部署 Open WebUI 可视化界面;
  7. 根据需要配置 GPU 加速和安全访问。

如果只是个人体验,推荐使用:

deepseek-r1:1.5b

如果服务器配置较好,可以使用:

deepseek-r1:7b

如果你希望获得更强的推理能力,并且有足够显存和内存,可以尝试:

deepseek-r1:14b

或更大的模型。

总体来说,Docker + Ollama 是当前部署 DeepSeek 最简单、最稳定、最适合入门的一种方式。它不需要复杂的 Python 环境配置,也不需要手动下载和管理大量模型文件,非常适合开发者快速搭建本地大模型服务。

目录结构
全文