将 nvidia 运行时添加到 Windows WSL 上的 docker 运行时

问题描述 投票:0回答:2

我想将 nvidia 运行时添加到我的 docker 中。 请注意,我运行的是 Windows 11。 Windows 上的 Docker Desktop v.4.24.2 集成在 WSL 2 上 NVIDIA 驱动程序 545.84

我将所有内容安装为 nvidia-container-toolkit 并安装在运行 ubuntu 22.04 LTS 的 wsl 中 我能跑了

docker run --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 -it --rm -v .:/app nvcr.io/nvidia/pytorch:22.07-py3

它实际上为我的 GPU 加载了它需要的一切。我知道这一点是因为我能够在 jupyter 笔记本中执行

import torch
for i in range(torch.cuda.device_count()):
   print(torch.cuda.get_device_properties(i).name)

它显示了我的 GPU (RTX 2080 SUPER)

但是如果我想使用标志 --runtime=nvidia 它会说

docker:来自守护进程的错误响应:未知或无效的运行时名称:nvidia。 请参阅“docker run --help”。

我想在 docker compose 中使用它:

version: '3'
services:
  pytorch_container:
    image: nvcr.io/nvidia/pytorch:22.07-py3
    command: ["bash"]
    volumes:
      - .:/app
    runtime: nvidia
    ipc: host
    ulimits:
      memlock: -1
      stack: 67108864
    stdin_open: true
    tty: true

它无法运行,因为它找不到 nvidia 运行时

我已经尝试过了 https://stackoverflow.com/a/59008360/22768491 还是什么都没有

docker pytorch windows-subsystem-for-linux nvidia wsl-2
2个回答
11
投票

所以我会回答我自己的问题。

正如我所说,我已经尝试添加 /etc/docker/daemon.json :

{
    "runtimes":{
        "nvidia":{
            "path":"/usr/bin/nvidia-container-runtime",
            "runtimeArgs":[
                
            ]
        }
    }
}

但看起来Windows 上的 Docker 桌面看起来并不在那里。 我在 Docker 桌面Docker Engine 下的设置中找到了守护进程 json。 我手动添加了条目在那里,现在它加载了nvidia运行时我希望它对其他人有帮助


0
投票

你说得对,这个问题困扰了我几个小时,我在 /etc/docker/daemon.json 下手动编辑,这个解决方案对我有用!

© www.soinside.com 2019 - 2024. All rights reserved.