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

如何配置Docker Compose:有GPU则启用,无GPU时正常启动容器

实现Docker Compose容器「有GPU则启用,无GPU直接启动」的配置方案

你当前的Docker Compose配置强制要求GPU资源,因此在无GPU的机器上启动会报错:

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

要实现自适应启动,可采用以下两种方案:

方案1:利用环境变量+YAML条件配置(单配置文件)

修改docker-compose.yaml,通过环境变量控制是否加载GPU资源配置:

version: "3.9"
# 定义GPU资源配置锚点
x-gpu-resources: &gpu-resources
  deploy:
    resources:
      reservations:
        devices:
          - capabilities: [gpu]

services:
  app:
    image: nvidia/cuda:11.0.3-base-ubuntu20.04
    # 仅当USE_GPU环境变量为true时,加载GPU配置
    ${USE_GPU:+<<: *gpu-resources}

启动时,自动检测GPU并设置环境变量:

# 检测是否存在GPU,设置USE_GPU变量
export USE_GPU=$(nvidia-smi &> /dev/null && echo true || echo false)
# 启动容器
docker-compose up -d

方案2:使用Docker Compose Profiles(更清晰的多环境分离)

通过Profiles区分GPU和非GPU环境,启动时自动选择对应Profile:

修改docker-compose.yaml:

version: "3.9"
services:
  # 基础无GPU配置
  app:
    image: nvidia/cuda:11.0.3-base-ubuntu20.04
    profiles: ["no-gpu"]
  # GPU增强配置,继承基础配置并添加GPU资源
  app-gpu:
    extends: app
    profiles: ["gpu"]
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]

启动时执行以下命令:

if nvidia-smi &> /dev/null; then
  docker-compose --profile gpu up -d
else
  docker-compose --profile no-gpu up -d
fi

注意事项

  • 两种方案都依赖nvidia-smi命令检测GPU,需确保有GPU的机器已安装NVIDIA驱动及Docker NVIDIA runtime。
  • 方案1的YAML条件配置仅支持Docker Compose 1.28及以上版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 02:54:25