DeepSeek-R1-Distill-Llama-8B 部署教程:Docker Compose 编排多模型推理服务
本文介绍如何使用 Docker Compose 和 Ollama 部署 DeepSeek-R1-Distill-Llama-8B 模型。该模型基于 R1-Zero 强化学习训练,在数学竞赛、代码生成等任务上表现优异。通过容器化编排,可实现开箱即用的推理服务,无需手动配置 Python 环境或 CUDA 驱动。
基于 Docker Compose 和 Ollama 部署 DeepSeek-R1-Distill-Llama-8B 模型的完整流程。涵盖环境准备、配置文件编写、服务启动及模型拉取步骤。提供命令行交互、Python 脚本集成及批量并发处理三种调用方式。此外包含系统提示词优化、多模型并行部署及服务持久化备份等进阶实践,帮助开发者构建可扩展的本地 AI 推理服务底座。
本文介绍如何使用 Docker Compose 和 Ollama 部署 DeepSeek-R1-Distill-Llama-8B 模型。该模型基于 R1-Zero 强化学习训练,在数学竞赛、代码生成等任务上表现优异。通过容器化编排,可实现开箱即用的推理服务,无需手动配置 Python 环境或 CUDA 驱动。
DeepSeek-R1 系列起点是 DeepSeek-R1-Zero——一个纯靠强化学习(RL)训练、跳过监督微调(SFT)阶段的'原生推理模型'。这种训练方式让它天然擅长链式思考、多步推演。
DeepSeek-R1-Distill-Llama-8B 是从强基座上蒸馏出的轻量版本——用 Llama 架构承载 R1 的能力,兼顾性能与效率。实测验证的实战派表现如下:
相比 HuggingFace + Transformers 适合研究者调试,Ollama + Docker Compose 面向工程落地:
/api/chat),和任何语言都能对接;而 Docker Compose 把'启动一个 Ollama 服务'变成了一行命令:docker-compose up -d。
新建文件夹 deepseek-r1-service,创建 docker-compose.yml 文件:
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama-deepseek
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ./ollama_models:/root/.ollama/models
- ./ollama_logs:/var/log/ollama
environment:
- OLLAMA_HOST=0.0.0.0:11434
- OLLAMA_NO_CUDA=0
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
注意:如果没有 NVIDIA GPU,请务必注释掉
deploy.resources整段,并取消command行的注释以启用 CPU 模式。
执行以下命令:
# 第一步:启动 Ollama 服务
docker-compose up -d ollama
# 第二步:等待服务就绪后,拉取模型
docker exec -it ollama-deepseek ollama pull deepseek-r1:8b
ollama pull deepseek-r1:8b 会自动从官方库下载 4-bit 量化版本(约 5.2GB)。可通过 docker logs -f ollama-deepseek 查看进度。
使用 curl 测试:
curl -X POST http://localhost:11434/api/chat \
-H "Content-Type: application/json" \
-d '{ "model": "deepseek-r1:8b", "messages": [{ "role": "user", "content": "解释什么是链式思维?" }], "stream": false }'
返回 JSON 中包含 message.content 且内容清晰,即表示成功。
docker exec -it ollama-deepseek ollama run deepseek-r1:8b
输入问题即可实时对话。
import requests
def ask_deepseek(question: str, model: str = "deepseek-r1:8b") -> str:
url = "http://localhost:11434/api/chat"
payload = {
"model": model,
"messages": [{"role": "user", "content": question}],
"stream": False,
"options": {"temperature": 0.3, "num_ctx": 4096}
}
try:
response = requests.post(url, json=payload, timeout=120)
response.raise_for_status()
return response.json()["message"]["content"].strip()
except Exception as e:
return f"请求失败:{e}"
if __name__ == "__main__":
result = ask_deepseek("请用中文解释 Transformer 架构中的自注意力机制。")
print(result)
关键设置:
timeout=120:避免长文本生成超时;temperature=0.3:降低随机性,回答更严谨;num_ctx=4096:确保处理中等长度输入。利用线程池并发发送多个独立请求:
import concurrent.futures
questions = [
"如何判断一个数是否为质数?",
"解释 HTTP 状态码 401 和 403 的区别。",
"用 Markdown 写一个简洁的 API 文档模板。"
]
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
futures = [executor.submit(ask_deepseek, q) for q in questions]
results = [f.result() for f in concurrent.futures.as_completed(futures)]
通过 system 角色强制设定风格:
{
"model": "deepseek-r1:8b",
"messages": [
{"role": "system", "content": "你是一名资深 Python 工程师,只给代码,不解释原理。"},
{"role": "user", "content": "写一个函数,过滤字符串中的短单词。"}
],
"stream": False
}
在同一份 docker-compose.yml 中添加第二个服务,修改端口(如 11435)和容器名,分别拉取不同模型(如 qwen2:7b),实现任务智能路由。
已在 volumes 中将模型挂载到宿主机目录 ./ollama_models。重装系统只需复制该文件夹 + docker-compose.yml 即可恢复全部服务。
本文完成了以下工作:
AI 服务的门槛在于如何把它变成工作流中稳定、可靠的环节。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online