You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose调用GPU失败:runtime:nvidia无效且device_requests不被允许

解决Docker Compose GPU服务启动失败问题

问题分析

你遇到的两个错误对应不同的配置问题:

  1. 第一个错误unknown or invalid runtime name: nvidia:Docker守护进程未加载nvidia runtime,通常是安装NVIDIA Toolkit后未重启Docker导致,但你无法重启共享机器,需换用其他配置方式。
  2. 第二个错误Additional property device_requests is not allowed:device_requests是Docker Swarm集群部署的专属配置字段,单机Docker Compose环境不支持该字段。

可行解决方案(无需重启Docker)

方案1:使用Compose v2支持的资源预留字段

Docker Compose v2.28.1支持通过deploy.resources.reservations.devices配置GPU,无需依赖预配置的nvidia runtime,修改后的docker-compose.yml如下:

services:
  hello-app:
    image: python:3.10-slim
    command: python -m http.server 8000
    ports:
      - "8000:8000"
    working_dir: /app
    volumes:
      - ./public:/app

  gpu-test:
    image: nvidia/cuda:12.2.0-base-ubuntu22.04
    command: nvidia-smi
    stdin_open: true
    tty: true
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all # 可指定具体GPU数量,比如1
              capabilities: [gpu]

方案2:直接挂载GPU设备文件(底层兼容方案)

如果方案1不生效,可直接将主机的GPU设备文件挂载到容器,配合环境变量让CUDA识别GPU,配置如下:

services:
  hello-app:
    image: python:3.10-slim
    command: python -m http.server 8000
    ports:
      - "8000:8000"
    working_dir: /app
    volumes:
      - ./public:/app

  gpu-test:
    image: nvidia/cuda:12.2.0-base-ubuntu22.04
    command: nvidia-smi
    stdin_open: true
    tty: true
    volumes:
      - /dev/nvidia0:/dev/nvidia0
      - /dev/nvidiactl:/dev/nvidiactl
      - /dev/nvidia-modeset:/dev/nvidia-modeset
      - /dev/nvidia-uvm:/dev/nvidia-uvm
      - /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools
    environment:
      - NVIDIA_VISIBLE_DEVICES=all

验证

运行以下命令测试GPU服务:

docker compose up gpu-test

若配置正确,会输出GPU的硬件信息。

内容的提问来源于stack exchange,提问作者KansaiRobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 02:50:05