Docker容器调用NVIDIA GPU失败:无法选择具备compute和utility能力的nvidia驱动
Docker容器调用NVIDIA GPU失败:无法选择具备compute和utility能力的nvidia驱动
看起来你遇到的是Docker与NVIDIA GPU集成时的典型配置缺口问题,别着急,咱们一步步排查解决:
第一步:安装NVIDIA Container Toolkit(关键!)
你只安装了CUDA Toolkit,但Docker需要专门的容器工具包才能识别并调用NVIDIA GPU。执行以下命令完成安装:# 添加NVIDIA官方GPG密钥 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 # 重启Docker服务让配置生效 sudo systemctl restart docker第二步:验证GPU是否能被Docker识别
运行以下测试命令,确认Docker已经能调用GPU:docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi如果终端能正常输出GPU的硬件信息,说明基础配置已经没问题了。
第三步:检查docker-compose.yml的GPU配置
确保你的Stable Diffusion服务配置里明确指定了GPU资源,且capabilities与错误提示匹配:services: stable-diffusion: # 你的其他配置(镜像、端口、挂载等) deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [compute, utility] # 如果上述deploy配置不生效(比如Docker版本较老),可以改用runtime配置: # runtime: nvidia第四步:确认主机端NVIDIA驱动正常
在主机终端运行nvidia-smi,如果无法显示GPU信息,说明主机本身的NVIDIA驱动没装好。Ubuntu 24.04可以用以下命令自动安装适配的驱动:sudo ubuntu-drivers autoinstall安装完成后重启机器,再重新检查
nvidia-smi和Docker的GPU调用。
之前你看到的旧帖子解决方案失效,主要是因为新版本的Docker和NVIDIA工具链已经更新,不再依赖旧的gpu能力标识,而是细分出了compute(计算)和utility(基础工具)这类更明确的能力项,所以必须用最新的容器工具包来适配。
备注:内容来源于stack exchange,提问作者Factor Three




