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

Ped*_*mpo 3 nvidia docker windows-subsystem-for-linux pytorch wsl-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
Run Code Online (Sandbox Code Playgroud)

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

import torch
for i in range(torch.cuda.device_count()):
   print(torch.cuda.get_device_properties(i).name)
Run Code Online (Sandbox Code Playgroud)

它显示了我的 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
Run Code Online (Sandbox Code Playgroud)

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

我已经尝试过 /sf/answers/4130585231/ 但仍然没有

Ped*_*mpo 9

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

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

{
    "runtimes":{
        "nvidia":{
            "path":"/usr/bin/nvidia-container-runtime",
            "runtimeArgs":[
                
            ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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