千家信息网

如何用Docker Compose来管理GPU资源

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"如何用Docker Compose来管理GPU资源",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何用Docker Compose来管理
千家信息网最后更新 2026年11月03日如何用Docker Compose来管理GPU资源

本篇内容主要讲解"如何用Docker Compose来管理GPU资源",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何用Docker Compose来管理GPU资源"吧!

在面向 AI 开发的大趋势下,容器化可以将环境无缝迁移,将配置环境的成本无限降低。但是,在容器中配置 CUDA 并运行 TensorFlow 一段时间内确实是个比较麻烦的时候,所以我们这里就介绍和使用它。

  • Enabling GPU access with Compose

  • Runtime options with Memory, CPUs, and GPUs

  • The Compose Specification

  • The Compose Specification - Deployment support

  • The Compose Specification - Build support

在 Compose 中使用 GPU 资源

  • 如果我们部署 Docker 服务的的主机上正确安装并设置了其对应配置,且该主机上恰恰也有对应的 GPU 显卡,那么就可以在 Compose 中来定义和设置这些 GPU 显卡了。

# 需要安装的配置$ apt-get install nvidia-container-runtime
  • 旧版本 <= 19.03

# runtime$ docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
  • 新版本 >= 19.03

# with --gpus$ docker run -it --rm --gpus all ubuntu nvidia-smi# use device$ docker run -it --rm --gpus \    device=GPU-3a23c669-1f69-c64e-cf85-44e9b07e7a2a \    ubuntu nvidia-smi# specific gpu$ docker run -it --rm --gpus '"device=0,2"' ubuntu nvidia-smi# set nvidia capabilities$ docker run --gpus 'all,capabilities=utility' --rm ubuntu nvidia-smi
  • 对应 Compose 工具的老版本(v2.3)配置文件来说的话,想要在部署的服务当中使用 GPU 显卡资源的话,就必须使用 runtime 参数来进行配置才可以。虽然可以作为运行时为容器提供 GPU 的访问和使用,但是在该模式下并不允许对 GPU 设备的特定属性进行控制。

services:  test:    image: nvidia/cuda:10.2-base    command: nvidia-smi    runtime: nvidia    environment:      - NVIDIA_VISIBLE_DEVICES=all

在 Compose v1.28.0+ 的版本中,使用 Compose Specification 的配置文件写法,并提供了一些可以更细粒度的控制 GPU 资源的配置属性可被使用,因此可以在启动的时候来精确表达我们的需求。咳咳咳,那这里我们就一起看看吧!

  • capabilities - 必须字段

    • 指定需要支持的功能;可以配置多个不同功能;必须配置的字段

    • man 7 capabilities

deploy:  resources:    reservations:      devices:        - capabilities: ["gpu"]
  • count

    • 指定需要使用的GPU数量;值为int类型;与device_ids字段二选一

deploy:  resources:    reservations:      devices:        - capabilities: ["tpu"]          count: 2
  • device_ids

    • 指定使用GPU设备ID值;与count字段二选一

deploy:  resources:    reservations:      devices:        - capabilities: ["gpu"]          device_ids: ["0", "3"]
deploy:  resources:    reservations:      devices:        - capabilities: ["gpu"]          device_ids: ["GPU-f123d1c9-26bb-df9b-1c23-4a731f61d8c7"]
  • driver

    • 指定GPU设备驱动类型

deploy:  resources:    reservations:      devices:        - capabilities: ["nvidia-compute"]          driver: nvidia
  • options

    • 指定驱动程序的特定选项

deploy:  resources:    reservations:      devices:        - capabilities: ["gpu"]          driver: gpuvendor          options:            virtualization: false

咳咳咳,看也看了,说也说了,那我们就简单的编写一个示例文件,让启动的 cuda 容器服务来使用一个 GPU 设备资源,并运行得到如下输出。

services:  test:    image: nvidia/cuda:10.2-base    command: nvidia-smi    deploy:      restart_policy:        condition: on-failure        delay: 5s        max_attempts: 3        window: 120s      resources:        limits:          cpus: "0.50"          memory: 50M        reservations:          cpus: "0.25"          memory: 20M          devices:            - driver: nvidia              count: 1              capabilities: [gpu, utility]      update_config:        parallelism: 2        delay: 10s        order: stop-first
  • 注意这里,如果设置 count: 2 的话,就会下面的输出中看到两块显卡设置的信息。如果,我们这里均未设置 count 或 device_ids 字段的话,则默认情况下将主机上所有 GPU 一同使用。

# 前台直接运行$ docker-compose upCreating network "gpu_default" with the default driverCreating gpu_test_1 ... doneAttaching to gpu_test_1test_1  | +-----------------------------------------------------------------------------+test_1  | | NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.1     |test_1  | |-------------------------------+----------------------+----------------------+test_1  | | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |test_1  | | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |test_1  | |                               |                      |               MIG M. |test_1  | |===============================+======================+======================|test_1  | |     Tesla T4            On   | 00000000:00:1E.0 Off |                     |test_1  | | N/A   23C    P8     9W /  70W |      MiB / 15109MiB |      %      Default |test_1  | |                               |                      |                  N/A |test_1  | +-------------------------------+----------------------+----------------------+test_1  |test_1  | +-----------------------------------------------------------------------------+test_1  | | Processes:                                                                  |test_1  | |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |test_1  | |        ID   ID                                                   Usage      |test_1  | |=============================================================================|test_1  | |  No running processes found                                                 |test_1  | +-----------------------------------------------------------------------------+gpu_test_1 exited with code
  • 当然,如果设置了 count 或 device_ids 字段的话,就可以在容器里面的程序中使用多块显卡资源了。可以通过以下部署配置文件来进行验证和使用。

services:  test:    image: tensorflow/tensorflow:latest-gpu    command: python -c "import tensorflow as tf;tf.test.gpu_device_name()"    deploy:      resources:        reservations:          devices:            - driver: nvidia              device_ids: ["0", "3"]              capabilities: [gpu]
  • 运行结果,如下所示,我们可以看到两块显卡均可以被使用到。

# 前台直接运行$ docker-compose up...Created TensorFlow device (/device:GPU:0 with 13970 MB memory -> physical GPU (device: 0, name: Tesla T4, pci bus id: 0000:00:1b.0, compute capability: 7.5)...Created TensorFlow device (/device:GPU:1 with 13970 MB memory) -> physical GPU (device: 1, name: Tesla T4, pci bus id: 0000:00:1e.0, compute capability: 7.5)...gpu_test_1 exited with code

></p><p class=到此,相信大家对"如何用Docker Compose来管理GPU资源"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

配置 资源 字段 显卡 运行 容器 文件 设备 管理 主机 版本 服务 内容 前台 功能 属性 时候 环境 程序 类型 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 科技创新与互联网经济 互联网与科技金融数据 互联网公司 科技公司 紫鲸互联网科技 北京互联网络科技有限公司 福州新华互联网科技学校 知乎 阿里互联网科技公司 花神(南京)互联网科技有限公司 江阴互联网智能科技产品进口 开一家科技互联网公司需要多少钱 如何创新互联网科技 华夏恒生科技与互联网科技 四川慕妮娅互联网科技有限公司 美国互联网科技实力 黑科技 体验场景 互联网大会 皮皮虾互联网科技有限公司 城市宝互联网科技有限公司 广州梦谷互联网科技有限公司领导 上海万顺科技互联网有限公司招聘 互联网黑科技 深圳九邦互联网科技有限公司 北京路客互联网科技有限公司 网络科技有限互联网 湖南洣水互联网科技有限公司扣款 上海电发互联网科技有限公司 科技赋能互联网健康 想开互联网科技公司怎么样 玉溪新华互联网科技好不好 工业互联网科技创业
0