在 Windows 10 + WSL2 上运行 nvidia-docker
Posted
技术标签:
【中文标题】在 Windows 10 + WSL2 上运行 nvidia-docker【英文标题】:running nvidia-docker on Windows 10 + WSL2 【发布时间】:2021-03-25 11:17:04 【问题描述】:我看到了几个关于这个主题的问答,并尝试了这两种方法。任何关于如何继续使用任一路线的建议表示赞赏:
从 WSL2 中运行 nvidia-docker
我关注了NVIDIA docs 和this tutorial。一切都安装好了,docker
命令在 Ubuntu 20.04 中运行。但是,sudo service docker start
返回:docker: unrecognized service
更新: 这变成了known issue。我能够在 these instructions 之后在 Ubuntu 上安装和运行 docker。但是,接下来我遇到了issue like this
$docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
Status: Downloaded newer image for nvcr.io/nvidia/k8s/cuda-sample:nbody
docker: Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: process_linux.go:459: container init caused: Running hook #0:: error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown.
ERRO[0065] error waiting for container: context canceled
WSL1 here 也有类似的问题,建议最好安装 WSL2。我在 WSL2 下遇到了同样的事情。
从 Windows 运行 NVIDIA docker:
另一个school of thought 建议从 WSL Ubuntu 中删除 docker 并改为运行 Windows docker。然后可以从 WSL 连接到它。好吧,我根本无法从 Windows 运行 nvidia-docker
:
$ docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
Unable to find image 'nvcr.io/nvidia/k8s/cuda-sample:nbody' locally
nbody: Pulling from nvidia/k8s/cuda-sample
...
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
有一些关于如何修复它的提示here,但这都是关于在 Linux 中运行的 docker。哪个不起作用(见上文)。
此外,从 ubuntu 中删除 docker 后,我仍然可以从 Ubuntu20.04 运行 docker,或者当我从 Powershell 运行 wsl
时:
$ which docker
/mnt/c/ProgramData/DockerDesktop/version-bin/docker
$ docker
The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.
See https://docs.docker.com/docker-for-windows/wsl/ for details.
我确实在 Docker 设置的两个不同选项卡中启用了基于 WSL2 的引擎和 Ubuntu 20.04 集成。
系统
Windows 10
WSL 2
Ubuntu 20.04 within WSL2
Windows Docker with WSL2-based engine and integration enabled
非常感谢任何帮助如何进一步诊断它
【问题讨论】:
除了你的,我只剩下一件事我没有尝试过,Windows Insider Program 但没有多少耐心了!感谢微软和英伟达! 【参考方案1】:https://docs.docker.com/docker-for-windows/wsl/
取消选中“启用与我的默认 WSL 发行版的集成”并应用,
然后取消选中“使用基于 WSL 2 的引擎”并应用。
检查以上所有并启用: “启用与其他发行版的集成:” Ubuntu-20.04
打开终端:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
它适用于我的 win10 docker 3.6...
【讨论】:
【参考方案2】:我认为让 nVidia GPU (CUDA) 在 WSL2 上运行的最佳方法是遵循 nVidia 文档CUDA on WSL 中的教程。您需要按顺序正确执行三件事:
-
首先,检查你的windows是否有更新,如果有更新。然后需要在Microsoft Windows Insider Program订阅,具体是在Dev Channel(Fast ring)订阅。确保将其设置为 Dev 频道而不是 Beta 频道或发布预览频道。这对我来说是棘手的部分,在您选择 Dev 频道后,通过运行 (winver) 程序检查您的 Windows 版本(在 Windows 的搜索栏中搜索它),如果它低于 20145,请重新检查您的 Windows 以获取更新(您将请参阅 20145 以上的更新说明版本可用)。您需要安装它,这里您需要耐心等待,因为下载和安装更新需要一段时间,它会要求您重新启动 Windows。重启后你就可以开始了(你还会注意到两个版本的 windows 之间的一些设计差异)。用(winver)再次检查你的windows版本找到它,它确实在20145以上。
接下来,安装the NVIDIA preview driver for WSL 2,这个过程非常简单。
最后,从tutorial 安装 WSL2,这也是非常简单的过程。就个人而言,我从David Bombal 频道关注了这个youtube 教程。
正确执行这三个步骤后,您可以按照 nVidia 教程from Setting up CUDA Toolkit 进行操作。
这是另一个nVidia document,说明了您在第 8 章中遇到的相同问题。他们声称This error usually indicates that the right Microsoft Windows Insider Preview Builds, WSL 2, NVIDIA drivers and NVIDIA Container Toolkit may not be installed correctly.
对我来说,这是我的 Windows Insider Preview 版本未正确设置为 20145 或更高版本。
【讨论】:
您认为为了使用 nvidia NGC 目录中的预训练模型而经历所有这些是否合理?我只想在我的 windows 笔记本电脑上用 quadro T1000 测试它们,然后再投资更多设备。 我会说是的。只需几个安装步骤,您就可以开始了。正如你所难过的,这是在 linux 上测试 nvidia 预训练模型的快速方法,无需实际的 linux。 我一直在尝试更新到开发频道,但它一直在崩溃。我目前的版本是 21H1。我很困惑,更新一直失败。 @Linminxiang,老实说我不知道为什么。我没有遇到这个更新失败。 @KhalilMeftah 我在删除卡巴斯基后成功更新。并按照here的配置成功安装一切。以上是关于在 Windows 10 + WSL2 上运行 nvidia-docker的主要内容,如果未能解决你的问题,请参考以下文章
Windows学习总结(23)——在 Windows 10 子系统 ubuntu 上利用 WSL2 安装 docker 的 2 种方式
Windows学习总结(23)——在 Windows 10 子系统 ubuntu 上利用 WSL2 安装 docker 的 2 种方式
在Windows 10中启动WSL2 并安装Linux( Ubuntu 为例)并运行docker