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

如何在privileged模式Docker容器中限制指定GPU设备?

问题:特权Docker容器中无法限制指定GPU设备

我参考Docker官方GPU支持文档进行GPU容器操作,为实现Docker-in-Docker(dind)功能给容器添加了privileged选项,但配置保留GPU设备0和3后,nvidia-smi仍显示全部8块GPU。请问如何在该privileged容器中限制指定GPU设备?

配置示例:

services:
  test:
    image: tensorflow/tensorflow:latest-gpu
    privileged: true          # <== 关键配置
    deploy:
      resources:
        reservations:
          devices:
          - driver: nvidia
            device_ids: ['0', '3']
            capabilities: [gpu]
解决方案

问题根源

privileged: true会完全绕过Docker的设备隔离机制,让容器直接访问宿主机所有硬件设备,导致你配置的Docker资源预留规则失效,所以nvidia-smi会显示全部GPU。

解决方法

在特权模式下,需要通过NVIDIA官方提供的环境变量强制限制可见GPU,这个方式不受Docker隔离机制的影响,具体操作如下:

修改你的Docker Compose配置,添加NVIDIA_VISIBLE_DEVICES环境变量,指定需要暴露的GPU设备ID:

services:
  test:
    image: tensorflow/tensorflow:latest-gpu
    privileged: true
    environment:
      - NVIDIA_VISIBLE_DEVICES=0,3  # 强制指定仅暴露0和3号GPU
    deploy:
      resources:
        reservations:
          devices:
          - driver: nvidia
            device_ids: ['0', '3']
            capabilities: [gpu]

验证

启动容器后进入内部执行nvidia-smi,此时应该只会显示你指定的0和3号GPU设备。

补充:如果非必要,尽量避免使用privileged: true,可以通过添加特定设备、权限capabilities来实现dind需求,这样Docker的GPU隔离规则就能正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:12:37