Windows 11 WSL2环境下Docker无法识别nvidia runtime问题求助
解决Docker Desktop(WSL2集成版)中docker-compose无法识别nvidia runtime的问题
问题原因
Docker Desktop 4.x版本(尤其是WSL2集成模式)已采用Docker原生GPU资源管理机制,不再需要通过--runtime=nvidia或手动配置nvidia runtime来启用GPU支持。旧版的nvidia runtime配置方式不适用于当前的Docker Desktop WSL2环境,这就是你使用runtime: nvidia报错的核心原因。
解决方案
将docker-compose配置中的runtime: nvidia替换为以下两种兼容方式之一:
方式一:使用deploy资源预留(推荐,适配docker-compose 3.7+)
修改后的配置文件如下:
version: '3.8' services: pytorch_container: image: nvcr.io/nvidia/pytorch:22.07-py3 command: ["bash"] volumes: - .:/app ipc: host ulimits: memlock: -1 stack: 67108864 stdin_open: true tty: true deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu]
方式二:使用设备挂载+环境变量(兼容旧版docker-compose)
如果需要适配更低版本的docker-compose,可采用以下配置:
version: '3' services: pytorch_container: image: nvcr.io/nvidia/pytorch:22.07-py3 command: ["bash"] volumes: - .:/app ipc: host ulimits: memlock: -1 stack: 67108864 stdin_open: true tty: true devices: - /dev/nvidia0:/dev/nvidia0 - /dev/nvidiactl:/dev/nvidiactl - /dev/nvidia-uvm:/dev/nvidia-uvm - /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools environment: - NVIDIA_VISIBLE_DEVICES=all
验证方法
启动容器后,进入容器执行以下代码验证GPU是否正常识别:
import torch for i in range(torch.cuda.device_count()): print(torch.cuda.get_device_properties(i).name)
补充说明
你之前尝试的手动配置daemon.json添加nvidia runtime的方案,仅适用于Linux原生Docker环境。WSL2集成的Docker Desktop由桌面端统一管理daemon配置,手动修改不会生效,反而可能导致配置冲突。
内容的提问来源于stack exchange,提问作者Pedro Quilles Campo
相关产品推荐
相关产品推荐

