用 Docker 跑 DeepSeek:从安装到 WebUI 的完整部署命令包
DeepSeek Docker部署教程|附完整命令
近年来,DeepSeek 系列大模型凭借较强的推理能力、代码能力以及较高的性价比,受到了很多开发者和企业用户的关注。对于个人学习、私有化测试、企业内部知识库或本地智能助手场景来说,将 DeepSeek 模型部署到自己的服务器上,是一个非常实用的选择。
本文将以 Docker 部署 DeepSeek 为主线,介绍如何在 Linux 服务器上通过 Docker 快速运行 DeepSeek 模型,并提供从环境准备、Docker 安装、Ollama 部署、DeepSeek 模型拉取、API 调用、WebUI 可视化界面部署到常见问题排查的完整命令。
说明:本文主要采用 Ollama + Docker 的方式部署 DeepSeek。本方案适合个人开发者、测试环境以及中小规模私有化使用。如果你需要大规模生产部署,可以进一步考虑 vLLM、TensorRT-LLM、Kubernetes、GPU 集群等方案。
一、部署方案说明
目前在本地或服务器上运行 DeepSeek 模型,常见方式包括:
-
Ollama 部署
- 上手简单
- 命令少
- 支持 Docker
- 适合本地开发和中小规模测试
-
vLLM 部署
- 性能较高
- 适合 API 服务化
- 更偏生产环境
- 对显卡资源和模型文件管理要求更高
-
Transformers 原生部署
- 灵活度高
- 适合研究和二次开发
- 配置相对复杂
-
第三方 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.5b 或 deepseek-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 默认没有复杂鉴权机制,如果直接公网开放,可能存在被滥用风险。
更推荐的方式是:
- 只开放 Open WebUI 的 3000 端口;
- 给 WebUI 配置登录账号;
- 使用 Nginx 反向代理并配置 HTTPS;
- 对 API 服务增加鉴权;
- 在安全组中限制访问 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
注意:该命令会删除未使用的镜像、容器和缓存,执行前请确认不会误删重要内容。
十七、常见问题与解决方法
问题一:模型下载很慢怎么办?
可以尝试以下方法:
- 更换网络环境;
- 使用海外服务器;
- 保持容器运行并等待下载完成;
- 选择更小的模型,例如
deepseek-r1:1.5b; - 检查磁盘空间是否充足。
查看磁盘空间:
df -h
查看 Ollama 数据目录大小:
du -sh /data/ollama
问题二:运行模型时内存不足怎么办?
如果出现内存不足、容器退出、响应极慢等问题,通常是模型太大导致的。
解决方法:
- 换用更小模型;
- 增加服务器内存;
- 使用 GPU;
- 关闭其他占用内存的服务;
- 检查是否有 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
如果失败,通常需要检查:
- NVIDIA 驱动是否安装;
- NVIDIA Container Toolkit 是否安装;
- Docker 是否重启;
- 启动容器时是否加了
--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。
建议采取以下措施:
-
不要直接公网暴露 11434 端口
- Ollama API 默认没有完整的认证体系;
- 暴露公网可能导致接口被他人调用。
-
使用 Open WebUI 作为入口
- 配置用户登录;
- 使用管理员账号管理模型。
-
使用 Nginx 反向代理
- 配置 HTTPS;
- 可以增加 Basic Auth;
- 可以限制访问来源。
-
限制安全组访问 IP
- 只允许公司办公 IP 或个人固定 IP 访问。
-
定期更新镜像
- 更新 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 私有化部署,核心流程可以概括为:
- 安装 Docker;
- 启动 Ollama 容器;
- 拉取 DeepSeek 模型;
- 使用命令行测试对话;
- 通过 API 调用模型;
- 部署 Open WebUI 可视化界面;
- 根据需要配置 GPU 加速和安全访问。
如果只是个人体验,推荐使用:
deepseek-r1:1.5b
如果服务器配置较好,可以使用:
deepseek-r1:7b
如果你希望获得更强的推理能力,并且有足够显存和内存,可以尝试:
deepseek-r1:14b
或更大的模型。
总体来说,Docker + Ollama 是当前部署 DeepSeek 最简单、最稳定、最适合入门的一种方式。它不需要复杂的 Python 环境配置,也不需要手动下载和管理大量模型文件,非常适合开发者快速搭建本地大模型服务。