🥇 版權: 本文由【墨理學AI】原創首發、各位讀者大大、敬請查閱、感謝三連
文章目錄
- 🔍你遇到的錯誤:
- 🔍 根本原因
- ? 解決方案:正確安裝 NVIDIA Container Toolkit
- ? 第一步:卸載舊版本(如果存在)
- ? 第二步:添加 NVIDIA 倉庫并安裝
- ? 第三步:安裝 `nvidia-container-toolkit`
- ? 第四步:配置 Docker 使用 NVIDIA 作為默認運行時
- ? 第五步:重啟 Docker
- ? 第六步:驗證安裝是否成功
- 1. 檢查 `nvidia-container-runtime` 是否在 PATH
- 2. 測試運行 GPU 容器
- 這里我的驗證命令和效果如下
- ? 第七步:更新你的 `docker-compose.yml`
- ? 第八步:重新構建并啟動
- ? 驗證服務
- 🎯 總結
- ?? 一起學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.gpgcurl -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-webdeploy:resources:reservations:devices:- driver: nvidiacount: 1capabilities: [gpu]environment:- NVIDIA_VISIBLE_DEVICES=all- NVIDIA_DRIVER_CAPABILITIES=compute,utility- PYTHONUNBUFFERED=1- MODELSCOPE_CACHE=/app/modelsvolumes:- ./uploads:/app/uploads- ./models:/app/models- ./gunicorn.conf.py:/app/gunicorn.conf.pynginx:image: nginx:alpinecontainer_name: qwen-qa-nginxports:- "8083:80"volumes:- ./nginx.conf:/etc/nginx/nginx.conf- ./backend/static:/app/backend/static- ./backend/templates:/app/backend/templates- ./uploads:/app/uploadsdepends_on:- web
? 注意:移除了
runtime: nvidia
,改用deploy.resources.reservations.devices
? 第八步:重新構建并啟動
docker-compose downdocker-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-smidocker run --rm --gpus all nvidia/cuda:11.8.0-base nvidia-smi
?? 一起學AI
- ?? 如果文章對你有些許幫助、蟹蟹各位讀者大大點贊、評論鼓勵博主的每一分認真創作