创建镜像时,

gpu worker 报错:

Error response from daemon: could not select device driver "nvidia" with capabilities: [[gpu]]

说明:
• 宿主机 GPU 正常:nvidia-smi 能看到 RTX 5060
• Docker 无法使用 GPU:Docker 引擎没有注册 NVIDIA 容器运行时

常见原因:

  1. WSL2 里 未安装 / 未配置 NVIDIA Container Toolkit
  2. 旧写法 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

在这里插入图片描述

更多推荐