我想将 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 还是什么都没有
所以我会回答我自己的问题。
正如我所说,我已经尝试添加 /etc/docker/daemon.json :
{
"runtimes":{
"nvidia":{
"path":"/usr/bin/nvidia-container-runtime",
"runtimeArgs":[
]
}
}
}
但看起来Windows 上的 Docker 桌面看起来并不在那里。 我在 Docker 桌面Docker Engine 下的设置中找到了守护进程 json。 我手动添加了条目在那里,现在它加载了nvidia运行时我希望它对其他人有帮助
你说得对,这个问题困扰了我几个小时,我在 /etc/docker/daemon.json 下手动编辑,这个解决方案对我有用!