docker离线推理部署核心是镜像准备、模型挂载、gpu配置三步闭环;需用官方cuda镜像、外挂模型文件、正确配置nvidia-container-toolkit并指定--gpus与端口映射。

直接用 Docker 做离线推理部署,核心就三点:镜像要提前准备好、模型文件得完整传进去、启动命令得配对 GPU 和路径。不依赖外网,关键靠“打包+搬运+运行”三步闭环。
选对基础镜像,优先用官方 CUDA 版本
别自己从 scratch 构建,容易漏掉 CUDA/cuDNN 适配细节。直接拉取官方支持 GPU 的镜像,比如:
-
llama.cpp:用
ghcr.io/ggml-org/llama.cpp:server-cuda(支持 GGUF 模型,轻量高效) -
vLLM:用
vllm/vllm-openai:latest或对应 CUDA 版本标签 -
PyTorch 推理服务:用
pytorch/pytorch:2.3.1-cuda12.1-cudnn8-runtime
联网机器上执行:docker pull --platform linux/amd64 ghcr.io/ggml-org/llama.cpp:server-cuda
再保存为 tar 包:docker save ghcr.io/ggml-org/llama.cpp:server-cuda > llama-server-cuda.tar
模型文件离线准备与挂载
模型不能打进镜像(体积大、更新频繁),推荐挂载方式。步骤如下:
- 在有网环境用
modelscope或 Hugging Face 下载模型,转成目标格式(如 GGUF、safetensors、.bin) - 把模型文件(含 tokenizer.json、config.json 等配套文件)整体打包传入内网服务器
- 在服务器上创建固定路径存放,例如:
/opt/models/qwen3-32b-F16.gguf - 启动容器时用
-v映射进去:-v /opt/models:/models
GPU 资源与服务端口正确配置
离线环境常忽略 NVIDIA 容器运行时配置,导致 --gpus 不生效。务必确认以下几点:
- 宿主机已安装匹配版本的 NVIDIA 驱动(建议 ≥535)
- 已安装
nvidia-container-toolkit并完成配置(systemctl restart docker) - 启动命令中明确指定 GPU 设备和端口映射,例如:
docker run --rm --gpus '"device=0"' -p 8000:8000 \-v /opt/models:/models \ghcr.io/ggml-org/llama.cpp:server-cuda \-m /models/qwen3-32b-F16.gguf --port 8000 --host 0.0.0.0 -c4096
验证与简易调用测试
服务起来后,本地 curl 即可验证:
- 检查容器是否运行:
docker ps | grep llama - 确认端口监听:
curl http://localhost:8000/health(多数镜像提供健康接口) - 发一个简单推理请求:
curl -X POST http://localhost:8000/completion \-H "Content-Type: application/json" \-d '{"prompt":"你好","n_predict":32}'
返回 JSON 含 content 字段,说明推理链路通了。











