用 Docker 运行 DeepSeek-R1,可以把 Ollama 服务放在容器中,把模型文件放在独立命名卷里。下面以 deepseek-r1:7b 为例,先走 CPU 路径验证接口,再按需要配置 GPU。容器启动成功只说明进程已启动,仍要检查模型加载、回答和重启后的存储。
准备环境与明确边界
本文命令使用 Bash,适用于已有可用 Docker 的 Linux 主机;Windows 用户可在配置好的 WSL2 环境中运行。先执行 docker version,确认客户端和服务端都能连接,检查 11434 是否已被本机 Ollama 或其他服务占用。

Ollama 官方 Docker 文档 给出了 CPU 和 GPU 容器启动方式。7B 模型库页面 列出了确切标签;下载大小不能直接当作运行内存需求,主机还要为上下文和系统预留资源。
创建带持久存储的本机服务
docker run -d \
--name ollama-deepseek \
-v ollama-deepseek-data:/root/.ollama \
-p 127.0.0.1:11434:11434 \
ollama/ollama
docker ps --filter name=ollama-deepseek
docker logs --tail 50 ollama-deepseek
-v 使用命名卷保存模型和配置,-p 只向宿主机回环地址发布端口。其他电脑不能通过宿主机公网地址直接访问这个映射;需要外部访问时,应另行设计认证和访问范围,不要直接把未经保护的本地模型接口暴露给互联网。
如果容器名已经存在,先检查它的镜像、挂载和用途,不要为让命令通过而删除已有容器。演示使用默认镜像标签;需要可复现的环境应在验证后记录实际镜像摘要和 Ollama 版本:
docker inspect --format '{{.Image}}' ollama-deepseek
docker exec ollama-deepseek ollama --version
拉取模型并发出一次非流式请求
docker exec ollama-deepseek ollama pull deepseek-r1:7b
docker exec ollama-deepseek ollama ls
curl --fail-with-body http://127.0.0.1:11434/api/generate \
-H 'Content-Type: application/json' \
--data-binary @- <<'JSON'
{
"model": "deepseek-r1:7b",
"prompt": "只回答一个数字:17 加 25 等于多少?",
"stream": false
}
JSON
请求字段依据 Generate API。返回应能解析成 JSON,done 为 true,response 有非空内容,实际模型名与目标标签相符。最后核对答案是否为 42;这只是连通与简单生成验证,不代表模型已经适合你的业务。
老版本 curl 若不支持 --fail-with-body,先更新 curl 或改用 --fail;不要把 HTTP 错误正文当成成功回答。CPU 上首次加载或生成可能较慢,先观察容器日志和资源,不凭等待时间猜模型已经坏了。
重启后确认模型仍然存在
docker restart ollama-deepseek
docker exec ollama-deepseek ollama ls
docker inspect --format '{{json .Mounts}}' ollama-deepseek
清单应仍包含完整模型标签,挂载应显示命名卷连接到 /root/.ollama。服务重启后重新发上一条请求;能够回答且未重新下载整个模型,才完成这轮验证。重启容器本身不会删除命名卷;删除卷是另一项会丢失数据的操作,不在这里的步骤中。
需要 GPU 时补哪些条件
NVIDIA 路径要求主机驱动和 NVIDIA Container Toolkit 正确配置,官方文档提供了运行时设置与 --gpus=all 方式。先验证 Docker 能访问 GPU,再配置同样的命名卷和端口映射。不要在 CPU 容器之外直接再启动一个同名、同端口的容器。
AMD、Vulkan 与 NVIDIA 的设备参数不同,应按官方 Docker 页面和实际驱动选择。Ollama FAQ 说明 macOS 的 Docker Desktop 没有这里所需的 GPU 直通路径,不能根据 Mac 上原生 Ollama 能加速就推断容器也能加速。
失败时先看这三处
- 宿主机端口被占用:检查已有监听服务,选择另一个宿主机端口并同步改 curl 地址。
- 模型下载失败:看容器日志、网络和命名卷所在磁盘,不要同时启动多个拉取任务。
- API 可连接但加载失败:保存错误原文,检查内存、驱动与容器设备权限,避免盲目增加上下文或并发。
本文依据 2026 年 10 月 1 日读取的官方文档编写,未在你的 Docker 主机上运行模型。没有提供真实速度或显存实测;实际可运行性以你的主机验证结果为准。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30126.html