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

DeepSeek 本地部署实战:用 Docker 快速跑通 Ollama 与 WebUI

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

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

DeepSeek 作为近期开源大模型生态中非常受关注的一类模型,已经被广泛用于本地知识问答、代码辅助、推理任务、企业内部智能助手等场景。相比直接在本机安装 Python、CUDA、依赖库等方式,使用 Docker 部署 DeepSeek 更加简单、干净、可迁移,也更适合服务器环境和团队统一交付。

本文将从零开始介绍如何使用 Docker 部署 DeepSeek,包含 CPU 部署、GPU 部署、Ollama 方式部署、Open WebUI 可视化界面部署、Docker Compose 一键部署 等内容,并提供完整可复制命令。


一、部署方式说明

目前本地部署 DeepSeek 常见方式主要有以下几种:

部署方式 特点 适合人群
Ollama + Docker 部署简单,命令少,适合快速体验 个人开发者、测试环境
Ollama + Open WebUI 带网页聊天界面,使用体验好 普通用户、团队内部使用
vLLM 部署 性能更强,适合 API 服务 企业部署、高并发场景
llama.cpp 部署 资源占用较低,适合量化模型 低配置机器、CPU 推理

本文重点介绍最容易上手、成功率最高的方案:

Docker + Ollama + DeepSeek + Open WebUI

这种方式可以快速在本地或服务器上运行 DeepSeek,并通过浏览器访问聊天界面。


二、服务器配置建议

DeepSeek 模型有多个版本,不同模型对硬件要求不同。部署前建议先确认机器配置。

1. CPU 部署

如果只是体验,可以使用 CPU 部署,但推理速度会比较慢。

建议配置:

CPU:4 核以上
内存:16GB 以上
磁盘:30GB 以上
系统:Ubuntu 20.04 / 22.04 / 24.04

适合运行较小模型,例如:

deepseek-r1:1.5b
deepseek-r1:7b

2. GPU 部署

如果希望推理速度更快,建议使用 NVIDIA GPU。

建议配置:

显卡:NVIDIA GPU
显存:8GB 以上,推荐 16GB / 24GB
内存:32GB 以上
磁盘:50GB 以上
驱动:已安装 NVIDIA Driver
Docker:支持 NVIDIA Container Toolkit

常见模型显存参考:

模型 推荐显存
deepseek-r1:1.5b 4GB 左右
deepseek-r1:7b 8GB 左右
deepseek-r1:8b 8GB~12GB
deepseek-r1:14b 16GB 左右
deepseek-r1:32b 24GB 以上
deepseek-r1:70b 多卡或高显存

注意:实际显存占用会受到量化方式、上下文长度、并发数量等因素影响。


三、安装 Docker

以下命令以 Ubuntu 系统为例。

1. 更新软件源

sudo apt update
sudo apt upgrade -y

2. 安装必要依赖

sudo apt install -y ca-certificates curl gnupg lsb-release

3. 添加 Docker GPG 密钥

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

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

4. 添加 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

5. 安装 Docker

sudo apt update

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

6. 启动 Docker 并设置开机自启

sudo systemctl start docker
sudo systemctl enable docker

7. 验证 Docker 是否安装成功

docker version

也可以运行测试容器:

sudo docker run hello-world

如果看到类似 Hello from Docker! 的输出,说明 Docker 安装成功。


四、可选:配置当前用户免 sudo 使用 Docker

默认情况下,普通用户执行 Docker 命令可能需要加 sudo。可以将当前用户加入 docker 用户组。

sudo usermod -aG docker $USER

然后重新登录服务器,或者执行:

newgrp docker

验证:

docker ps

如果不报权限错误,说明配置成功。


五、GPU 环境准备

如果你只使用 CPU,可以跳过本章节。

1. 查看 NVIDIA 驱动

nvidia-smi

如果能看到显卡信息,说明 NVIDIA 驱动已经安装。

示例输出:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.xx       Driver Version: 535.xx       CUDA Version: 12.x      |
| GPU Name        Memory-Usage                                                |
+-----------------------------------------------------------------------------+

如果提示 command not found 或无法识别显卡,需要先安装 NVIDIA 驱动。


六、安装 NVIDIA Container Toolkit

Docker 默认不能直接调用 GPU,需要安装 NVIDIA Container Toolkit。

1. 添加 NVIDIA 软件源

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

2. 安装工具包

sudo apt update
sudo apt install -y nvidia-container-toolkit

3. 配置 Docker 使用 NVIDIA Runtime

sudo nvidia-ctk runtime configure --runtime=docker

4. 重启 Docker

sudo systemctl restart docker

5. 测试 Docker 是否能调用 GPU

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

如果容器内能正常输出显卡信息,说明 GPU 容器环境配置成功。


七、方式一:使用 Docker 部署 Ollama

Ollama 是一个非常方便的大模型本地运行工具,可以快速下载和运行 DeepSeek 模型。通过 Docker 部署 Ollama,可以避免污染宿主机环境。


八、CPU 方式启动 Ollama

如果你没有 NVIDIA GPU,可以使用以下命令启动 Ollama:

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

参数说明:

-d:后台运行容器
--name ollama:容器名称为 ollama
-p 11434:11434:映射 Ollama API 端口
-v ollama:/root/.ollama:持久化模型文件
--restart always:容器异常退出或服务器重启后自动启动
ollama/ollama:使用 Ollama 官方镜像

查看容器状态:

docker ps

查看日志:

docker logs -f ollama

九、GPU 方式启动 Ollama

如果你已经配置好 NVIDIA Container Toolkit,可以使用 GPU 启动 Ollama:

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

如果你之前已经创建过同名容器,需要先删除:

docker stop ollama
docker rm ollama

然后再执行 GPU 启动命令。


十、下载 DeepSeek 模型

Ollama 容器启动后,可以进入容器下载模型。

docker exec -it ollama bash

进入容器后执行:

ollama pull deepseek-r1:1.5b

如果想下载 7B 模型:

ollama pull deepseek-r1:7b

如果机器配置较高,可以下载更大的模型:

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

十一、运行 DeepSeek 模型

使用以下命令运行 DeepSeek:

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

然后你可以直接在命令行中提问,例如:

请用 Python 写一个快速排序算法

或者:

解释一下 Docker 的镜像和容器有什么区别

如果要退出对话,可以输入:

/bye

十二、通过 API 调用 DeepSeek

Ollama 默认会暴露 HTTP API,端口为 11434

如果是在服务器本机调用:

curl http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-r1:7b",
    "prompt": "请解释一下什么是大语言模型",
    "stream": false
  }'

如果你在远程电脑访问服务器,需要将 localhost 替换为服务器 IP:

curl http://服务器IP:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-r1:7b",
    "prompt": "请写一段 Nginx 反向代理配置",
    "stream": false
  }'

流式输出示例:

curl http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-r1:7b",
    "prompt": "请介绍一下 Kubernetes 的核心组件",
    "stream": true
  }'

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

命令行使用 DeepSeek 对开发者来说很方便,但如果想让团队成员像使用 ChatGPT 一样通过浏览器访问,就可以部署 Open WebUI。

Open WebUI 是一个常用的大模型 Web 管理界面,支持对接 Ollama。


十四、Docker 启动 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

参数说明:

-p 3000:8080:将容器内 8080 端口映射到宿主机 3000 端口
-e OLLAMA_BASE_URL:指定 Ollama API 地址
-v open-webui:/app/backend/data:持久化 WebUI 数据
--add-host=host.docker.internal:host-gateway:让容器访问宿主机服务

启动完成后,浏览器访问:

http://服务器IP:3000

如果是本机部署,可以访问:

http://localhost:3000

第一次打开时需要注册管理员账号。注册完成后,在模型列表中选择已经下载好的 DeepSeek 模型即可开始聊天。


十五、推荐方式:Docker Compose 一键部署

如果不想分别执行多个 docker run 命令,推荐使用 Docker Compose 管理 Ollama 和 Open WebUI。

1. 创建项目目录

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

2. 创建 docker-compose.yml

vim docker-compose.yml

写入以下内容。

CPU 版本 Compose

services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - 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:
  ollama:
  open-webui:

GPU 版本 Compose

如果需要 GPU,请使用以下配置:

services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - 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:
  ollama:
  open-webui:

如果你的 Docker Compose 环境不支持 deploy.resources.reservations.devices,可以改用前文的 docker run --gpus all 方式启动 Ollama。

3. 启动服务

docker compose up -d

查看服务状态:

docker compose ps

查看日志:

docker compose logs -f

十六、使用 Compose 下载 DeepSeek 模型

服务启动后,执行:

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

也可以选择更小的模型:

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

下载完成后查看模型:

docker exec -it ollama ollama list

测试运行:

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

浏览器访问:

http://服务器IP:3000

即可通过 Web 界面使用 DeepSeek。


十七、常用运维命令

1. 查看容器

docker ps

查看所有容器,包括已停止的容器:

docker ps -a

2. 查看 Ollama 日志

docker logs -f ollama

3. 查看 Open WebUI 日志

docker logs -f open-webui

4. 重启服务

docker restart ollama
docker restart open-webui

如果使用 Compose:

docker compose restart

5. 停止服务

docker stop ollama open-webui

Compose 方式:

docker compose down

6. 删除容器

docker rm ollama open-webui

7. 删除镜像

docker rmi ollama/ollama
docker rmi ghcr.io/open-webui/open-webui:main

8. 查看 Docker 卷

docker volume ls

9. 删除数据卷

如果你确认不再需要模型和 WebUI 数据,可以删除数据卷:

docker volume rm ollama
docker volume rm open-webui

使用 Compose 创建的数据卷名称可能会带项目前缀,例如:

docker volume ls

再根据实际名称删除。


十八、修改模型存储路径

默认使用 Docker Volume 存储模型文件。如果你希望将模型保存到指定磁盘目录,例如 /data/ollama,可以这样启动:

mkdir -p /data/ollama

CPU 版本:

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

GPU 版本:

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

这样模型文件会保存到宿主机的:

/data/ollama

便于备份、迁移和扩容。


十九、配置防火墙

如果你在云服务器上部署,需要放行端口。

常用端口:

11434:Ollama API 端口
3000:Open WebUI 页面端口

如果使用 UFW:

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

查看防火墙状态:

sudo ufw status

安全建议:不建议直接将 11434 暴露到公网。生产环境中最好只开放 WebUI 端口,并通过 Nginx、HTTPS、账号权限、内网访问等方式进行保护。


二十、使用 Nginx 反向代理 Open WebUI

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

https://ai.example.com

可以使用 Nginx 反向代理。

1. 安装 Nginx

sudo apt install -y nginx

2. 新建配置文件

sudo vim /etc/nginx/conf.d/open-webui.conf

写入:

server {
    listen 80;
    server_name ai.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;
    }
}

3. 检查配置

sudo nginx -t

4. 重载 Nginx

sudo systemctl reload nginx

然后访问:

http://ai.example.com

如果需要 HTTPS,可以配合 Certbot 申请免费证书。


二十一、配置 HTTPS 证书

安装 Certbot:

sudo apt install -y certbot python3-certbot-nginx

申请证书:

sudo certbot --nginx -d ai.example.com

按提示输入邮箱并确认,证书申请成功后,Certbot 会自动修改 Nginx 配置。

测试自动续期:

sudo certbot renew --dry-run

二十二、常见问题排查

1. Open WebUI 无法连接 Ollama

先检查 Ollama 是否正常:

docker ps
docker logs -f ollama

测试 API:

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

如果使用 Compose,Open WebUI 连接地址应为:

http://ollama:11434

如果使用单独 docker run 方式,连接宿主机 Ollama 时通常使用:

http://host.docker.internal:11434

并需要添加:

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

2. 模型下载很慢

模型文件通常比较大,下载慢是正常现象。可以考虑:

  • 使用网络更好的服务器;
  • 选择更小模型,例如 deepseek-r1:1.5b
  • 避免在高峰期下载;
  • 提前下载后迁移模型目录。

3. GPU 没有被调用

检查宿主机:

nvidia-smi

检查容器 GPU:

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

检查 Ollama 是否用 GPU 启动:

docker inspect ollama | grep -i nvidia

如果没有 GPU 配置,重新创建容器:

docker stop ollama
docker rm ollama

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

4. 显存不足

如果运行模型时报显存不足,可以尝试:

  • 换用更小模型;
  • 降低上下文长度;
  • 停止其他占用 GPU 的程序;
  • 使用量化模型;
  • 使用 CPU 运行,但速度会变慢。

查看 GPU 占用:

nvidia-smi

5. 端口被占用

如果启动时报错:

port is already allocated

说明端口已经被其他程序占用。

查看端口占用:

sudo lsof -i:3000
sudo lsof -i:11434

或:

sudo ss -lntp | grep 3000
sudo ss -lntp | grep 11434

解决方式:

  • 停止占用端口的程序;
  • 修改 Docker 端口映射。

例如将 WebUI 映射到 8080:

docker run -d \
  --name open-webui \
  -p 8080: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:8080

二十三、升级服务

1. 升级 Ollama

docker pull ollama/ollama
docker stop ollama
docker rm ollama

然后使用原来的启动命令重新启动。

CPU:

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

GPU:

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

由于模型数据保存在 volume 中,重新创建容器不会删除已下载模型。

2. 升级 Open WebUI

docker pull ghcr.io/open-webui/open-webui:main
docker stop open-webui
docker rm open-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

3. Compose 方式升级

如果你使用 Docker Compose,则更简单:

docker compose pull
docker compose up -d

二十四、完整快速部署命令汇总

如果你的服务器已经安装 Docker,并且只想快速部署,可以直接使用下面命令。

CPU 快速部署

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

cat > docker-compose.yml <<'EOF'
services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - 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:
  ollama:
  open-webui:
EOF

docker compose up -d

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

访问:

http://服务器IP:3000

GPU 快速部署

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

cat > docker-compose.yml <<'EOF'
services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - 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:
  ollama:
  open-webui:
EOF

docker compose up -d

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

访问:

http://服务器IP:3000

二十五、总结

使用 Docker 部署 DeepSeek 的核心思路非常清晰:

  1. 安装 Docker;
  2. 如果使用 GPU,安装 NVIDIA Container Toolkit;
  3. 启动 Ollama 容器;
  4. 下载 DeepSeek 模型;
  5. 可选部署 Open WebUI;
  6. 通过浏览器或 API 使用模型。

对于个人用户,推荐使用:

Docker + Ollama + Open WebUI

对于企业环境,建议进一步增加:

  • Nginx 反向代理;
  • HTTPS 证书;
  • 账号权限控制;
  • 内网访问限制;
  • 日志与监控;
  • 数据备份;
  • GPU 资源隔离。

如果只是快速体验,使用 deepseek-r1:1.5bdeepseek-r1:7b 即可;如果追求更好的推理效果,可以根据显存情况选择 14b32b 或更大模型。

通过本文提供的命令,你可以在较短时间内完成 DeepSeek 的 Docker 本地化部署,并搭建出一个可供浏览器访问的 AI 对话系统。

目录结构
全文