用 Docker 一键搭建本地 DeepSeek:Ollama + Open WebUI 完整配置示例
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 是非常适合入门和轻量级使用的方案。
本文部署完成后,你将获得:
- 一个本地 DeepSeek 推理服务;
- 一个可视化 Web 聊天页面;
- 可通过浏览器访问;
- 可使用 Docker Compose 一键启动;
- 配置文件可迁移到其他服务器。
二、服务器环境要求
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
然后即可开始对话。
如果模型列表中没有显示,可以检查:
- Ollama 模型是否下载成功;
- Open WebUI 是否能访问 Ollama;
OLLAMA_BASE_URL是否配置正确;- 容器是否在同一个 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 推理;
- 模型参数量过大;
- 服务器内存不足;
- 磁盘性能较差;
- 并发请求过多。
解决方案:
- 使用更小模型,例如
deepseek-r1:1.5b; - 启用 NVIDIA GPU;
- 增加内存;
- 使用 SSD;
- 减少上下文长度和并发数。
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
十五、推荐的生产环境配置
如果用于个人学习,上面的配置已经足够。如果用于团队或企业内部,建议增加以下配置:
- 使用 HTTPS;
- 配置访问控制;
- 关闭 Ollama 公网端口;
- 定期备份 Open WebUI 数据;
- 控制模型大小和并发;
- 配置日志轮转;
- 使用独立数据盘存储模型;
- 对服务器进行基础安全加固。
可以为 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 本地化部署。整体流程可以概括为:
- 安装 Docker 和 Docker Compose;
- 创建项目目录;
- 编写
docker-compose.yml; - 启动 Ollama 和 Open WebUI;
- 拉取 DeepSeek 模型;
- 通过浏览器访问 WebUI;
- 根据需要配置 GPU、域名、HTTPS 和安全策略。
对于个人用户而言,Ollama + DeepSeek + Open WebUI 是非常友好的本地大模型部署方案,安装简单、维护方便、界面直观。对于企业或团队用户,则建议在此基础上进一步加强权限控制、访问安全、日志管理和资源监控。
只要服务器资源足够,使用 Docker 部署 DeepSeek 可以快速搭建一个私有 AI 助手,为代码开发、文档问答、知识库检索和自动化办公提供基础能力。