Docker 无法使用GPU 的解决方法
·
创建镜像时,
gpu worker 报错:
Error response from daemon: could not select device driver "nvidia" with capabilities: [[gpu]]
说明:
• 宿主机 GPU 正常:nvidia-smi 能看到 RTX 5060
• Docker 无法使用 GPU:Docker 引擎没有注册 NVIDIA 容器运行时
常见原因:
- WSL2 里 未安装 / 未配置 NVIDIA Container Toolkit
- 旧写法 deploy.resources.devices.driver: nvidia 在新版 Docker 29.x + Compose 5.x 下,若未装 Toolkit,会直接报这个错
redis、web、worker-cpu 能起来,只有 worker-gpu 卡在 Created,符合「仅 GPU 服务失败」的特征。
解决方案:
让 Docker 能访问 GPU。在 WSL 终端执行:
# 1. 安装 NVIDIA Container Toolkit
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L 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
sudo apt-get install -y nvidia-container-toolkit
# 2. 配置 Docker 运行时并重启
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# 3. 验证 Docker 能否用 GPU
docker run --rm --gpus 1 nvidia/cuda:12.6.0-base-ubuntu22.04 nvidia-smi

再启用 CDI(Toolkit 安装后):
sudo nvidia-ctk runtime configure --runtime=docker --cdi.enabled=true
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
sudo systemctl restart docker
并把 compose 里修改:
# CDI 模式下禁止 gpus:/--gpus,必须用 runtime: nvidia(Toolkit 已配置时)
runtime: nvidia
#+ 环境变量指定 GPU
environment:
- NVIDIA_VISIBLE_DEVICES=0
- NVIDIA_DRIVER_CAPABILITIES=compute,utility
能正常输出 GPU 信息后,再启动项目:
cd /mnt/e/aliyun_project_clone/AI_RAG_Answer # 按你的实际路径
docker compose down
docker compose up -d --build
docker compose ps -a
docker compose exec worker-gpu nvidia-smi

更多推荐

所有评论(0)