必须先确认宿主机 nvidia-smi 正常且 nvidia-container-cli 可用,再拉取指定 tag 镜像(如 6.7b-fp16),启动时需 --gpus、--shm-size、--memory 并挂载正确模型路径,最后通过日志和 curl 验证服务真正就绪。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

确认 GPU 驱动和 NVIDIA Container Toolkit 是否就绪
没装对驱动或 toolkit,nvidia-smi 能看到卡,但容器里 nvidia-smi 报错或根本没输出——这是最常卡住的第一步。
必须满足两个条件才可能成功启动 GPU 加速的 DeepSeek 容器:
-
nvidia-smi在宿主机命令行能正常显示 GPU 状态(驱动版本 ≥ 525.60.13,对应 CUDA 12.0+) -
nvidia-container-cli --version有输出,且docker info | grep -i nvidia显示runtimes: nvidia - Ubuntu 用户建议用官方脚本安装:
curl -sL https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -,再配源安装nvidia-docker2
常见坑:CentOS 7/8 上默认用 containerd,但未配置 mirrors.nvidia.com 镜像源会导致拉取失败;Windows WSL2 用户需额外启用 WSL2 的 GPU 支持(需 Windows 11 22H2+ + NVIDIA driver for WSL)。
拉取镜像时选对 tag,别直接用 :latest
DeepSeek 官方镜像仓库(deepseek-ai/deepseek-coder、deepseek-ai/deepseek-v1.5 等)的 :latest 不稳定,可能指向开发分支或未验证的量化版本,导致启动报 ModuleNotFoundError: No module named 'vllm' 或 torch.compile not supported。
推荐按场景明确指定 tag:
- 想跑 6.7B 全精度模型 → 用
deepseek-ai/deepseek-coder:6.7b-fp16 - 边缘设备(如 Jetson Orin)→ 用
deepseek-ai/deepseek-coder:1.3b-int4(注意该镜像只支持 ARM64) - 需要 Web UI(如 ChatUI)→ 拉
deepseek-ai/deepseek-chat:0.5,它内置了gradio服务入口 - 验证镜像完整性:运行
docker inspect deepseek-ai/deepseek-coder:6.7b-fp16 | grep -A 5 "Env",确认含PYTHONUNBUFFERED=1和CUDA_HOME=/usr/local/cuda
启动容器时必须显式声明 GPU 设备和内存限制
不加 --gpus 或资源限制,容器会 fallback 到 CPU 模式,6.7B 模型推理延迟超 10 秒,且容易 OOM kill。
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
典型安全启动命令(以 6.7B 模型为例):
docker run -d \ --gpus '"device=0"' \ --shm-size=2g \ --memory=16g \ --cpus=6 \ -p 8080:8080 \ -v $(pwd)/models:/models \ -e MODEL_PATH="/models/deepseek-coder-6.7b-instruct" \ --name deepseek-6b \ deepseek-ai/deepseek-coder:6.7b-fp16
关键点说明:
-
--gpus '"device=0"':单引号包裹双引号是 shell 必须写法,漏掉会报invalid device specification -
--shm-size=2g:vLLM 默认使用共享内存通信,/dev/shm默认 64MB,不够用会卡在Loading model... -
-v $(pwd)/models:/models:宿主机models/目录必须已存好 HuggingFace 格式模型(含config.json,pytorch_model.bin.index.json),否则容器启动后立刻退出 -
MODEL_PATH环境变量值必须与挂载路径内实际目录名严格一致,大小写敏感
验证服务是否真正 ready,别只看容器状态
docker ps 显示 Up 并不等于推理服务就绪。常见假成功现象:容器状态是 Up,但 curl http://localhost:8080/health 返回 503,或日志里反复出现 Waiting for model load...。
正确验证步骤:
- 实时盯日志:
docker logs -f deepseek-6b 2>&1 | grep -E "(loaded|ready|Running on)",看到Model loaded in X.XX s才算真加载完 - 检查端口监听:
docker exec deepseek-6b ss -tlnp | grep :8080,确认是python进程而非nginx占着端口 - 发一个最小请求测试:
curl -X POST http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"deepseek-coder","messages":[{"role":"user","content":"hello"}]}' - 若返回
"error": "CUDA out of memory",说明--memory设太小,需调高至 20g+;若返回"error": "Model not found",90% 是MODEL_PATH路径拼写错误或模型文件不完整
特别注意:某些镜像(如 deepseek-chat 系列)默认监听 0.0.0.0:7860(Gradio),不是 8080;而 vLLM 启动的 API 服务默认是 8000,不是 8080——端口号必须和镜像文档对齐,不能凭经验猜。










