🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连
🔍你遇到的错误:
exec: "nvidia-container-runtime": executable file not found in $PATH: unknown
说明:Docker 找不到 nvidia-container-runtime
这个可执行文件,这是 NVIDIA Docker 支持的核心组件。
🔍 根本原因
虽然你安装了 nvidia-docker2
,但它的底层运行时 nvidia-container-runtime
没有被正确安装或没有加入系统 PATH
。
✅ 解决方案:正确安装 NVIDIA Container Toolkit
请按以下步骤 重新安装并配置 NVIDIA Container Toolkit。
✅ 第一步:卸载旧版本(如果存在)
sudo apt-get purge -y nvidia-docker2 nvidia-container-toolkit
sudo rm -rf /etc/nvidia-container-runtime
✅ 第二步:添加 NVIDIA 仓库并安装
# 添加密钥和仓库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.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-get update
✅ 第三步:安装 nvidia-container-toolkit
sudo apt-get install -y nvidia-container-toolkit
⚠️ 注意:现在推荐使用
nvidia-container-toolkit
而不是旧的nvidia-docker2
✅ 第四步:配置 Docker 使用 NVIDIA 作为默认运行时
sudo nvidia-ctk runtime configure --runtime=docker
这会自动修改 /etc/docker/daemon.json
,添加:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
✅ 第五步:重启 Docker
sudo systemctl restart docker
✅ 第六步:验证安装是否成功
1. 检查 nvidia-container-runtime
是否在 PATH
which nvidia-container-runtime
✅ 正常输出应为:
/usr/bin/nvidia-container-runtime
2. 测试运行 GPU 容器
docker run --rm --gpus all nvidia/cuda:11.8.0-base nvidia-smi
你应该看到类似这样的输出(显示你的 GPU 信息):
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.60.13 Driver Version: 525.60.13 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:00:1E.0 Off | 0 |
| N/A 38C P8 9W / 70W | 0MiB / 15360MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
这里我的验证命令和效果如下
docker run -it --rm --gpus all pytorch/pytorch:2.7.0-cuda12.6-cudnn9-runtime /bin/bash
# 进入容器内
root@e16c6f18b6bc:/workspace# nvidia-smi
Tue .. 2025
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 3090 Off | 00000000:01:00.0 Off | N/A |
| 0% 35C P8 12W / 350W | 18396MiB / 24576MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
+---------------------------------------------------------------------------------------+
✅ 第七步:更新你的 docker-compose.yml
你现在可以使用 --gpus
语法(推荐),不再需要 runtime: nvidia
services:
web:
build: .
container_name: qwen-qa-web
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=compute,utility
- PYTHONUNBUFFERED=1
- MODELSCOPE_CACHE=/app/models
volumes:
- ./uploads:/app/uploads
- ./models:/app/models
- ./gunicorn.conf.py:/app/gunicorn.conf.py
nginx:
image: nginx:alpine
container_name: qwen-qa-nginx
ports:
- "8083:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./backend/static:/app/backend/static
- ./backend/templates:/app/backend/templates
- ./uploads:/app/uploads
depends_on:
- web
✅ 注意:移除了
runtime: nvidia
,改用deploy.resources.reservations.devices
✅ 第八步:重新构建并启动
docker-compose down
docker-compose up --build -d
✅ 验证服务
# 查看日志
docker logs qwen-qa-web -f
你应该看到:
- Gunicorn 启动
- Qwen3 模型开始加载(可能需要 2~5 分钟)
- Nginx 成功代理请求
访问:http://your-server-ip:8083
🎯 总结
问题 | 解决方案 |
---|---|
nvidia-container-runtime not found |
安装 nvidia-container-toolkit |
OCI runtime create failed |
使用 nvidia-ctk runtime configure 配置 Docker |
runtime: nvidia 失效 |
改用 deploy.resources.devices (Docker Compose v2+) |
现在你的 Docker 应该可以 正确调用 GPU 来运行 Qwen3 模型了!
如果仍有问题,请运行:
nvidia-smi
docker run --rm --gpus all nvidia/cuda:11.8.0-base nvidia-smi
❤️ 一起学AI
- ❤️ 如果文章对你有些许帮助、蟹蟹各位读者大大点赞、评论鼓励博主的每一分认真创作