问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Windows 下让 Docker Desktop 关联上 NVidia GPU

创作时间:
作者:
@小白创作中心

Windows 下让 Docker Desktop 关联上 NVidia GPU

引用
CSDN
1.
https://blog.csdn.net/ndscvipuser/article/details/136610169

本文将详细介绍如何在Windows系统下配置Docker Desktop,使其能够使用NVIDIA GPU进行加速计算。这对于需要在Windows环境下进行深度学习、机器学习等GPU计算任务的开发者来说,具有很高的实用价值。

一、背景及动机

在使用Docker容器进行GPU计算时,如果遇到以下错误信息,说明需要对Docker进行GPU支持的配置:

$ docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
docker: Error response from daemon: unknown or invalid runtime name: nvidia.
See 'docker run --help'.

关键在于--runtime=nvidia选项,如果不解决这个问题,将无法在容器中使用GPU。

二、处理全过程

2.1、安装 WSL 2

此步骤要求Windows版本为10(内部版本19041及以上)或Windows 11。首先检查WSL是否已安装:

$ wsl -l -v

如果未安装,可以使用以下命令进行安装:

$ wsl --install

安装完成后,默认使用WSL 2。接下来安装Ubuntu 20.04:

$ wsl --install -d Ubuntu-20.04

安装完成后,需要设置用户名和密码。

2.2、安装 Docker Desktop

Docker Desktop的安装非常简单,可以直接从Docker官方文档下载并按照说明进行安装。

2.3、开启 Docker 的 GPU 支持

2.3.1、正式开始

首先验证当前配置是否支持GPU:

$ docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
docker: Error response from daemon: unknown or invalid runtime name: nvidia.
See 'docker run --help'.

接着在WSL中打开Ubuntu:

2.3.2、安装 nvidia 容器工具包

在Ubuntu中使用Apt方式安装NVIDIA容器工具包:

$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
$ sudo apt-get update

可能会遇到以下错误:

$ sudo apt-get install -y nvidia-container-toolkit
/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

解决方法是重启电脑或重启Docker Desktop。

2.3.3、配置 Docker Daemon

执行以下命令:

$ sudo nvidia-ctk runtime configure --runtime=docker

2.3.4、完美解决

重启Docker Desktop后,再次验证GPU支持:

$ docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

如果显示GPU信息,则表示配置成功。

三、扩展知识

3.1、Linux 包管理工具 Apt、Yum、Dnf 和 Zypper 有什么不同?

本文使用了Apt进行包管理,以下是各种包管理工具的简要对比:

  • Apt (Advanced Package Tool):主要用于Debian及其衍生发行版,如Ubuntu、Linux Mint等。
  • Yum (Yellowdog Updater, Modified):主要用于Red Hat系列发行版,如CentOS、Fedora(早期版本)等。
  • Dnf (Dandified Yum):是Yum的升级版,主要用于较新的Fedora和Red Hat Enterprise Linux 8及以上版本。
  • Zypper:主要用于SUSE和openSUSE发行版。

3.2、解释一下 nvidia 容器工具包

NVIDIA Container Toolkit使用户能够构建和运行GPU加速的容器。其主要优势包括:

  • 简化了在容器中使用NVIDIA GPU的过程。
  • 提供了一致的方式来配置和部署GPU加速的容器。
  • 与主流的容器运行时和编排工具兼容。

3.3、命令行中 docker --runtime 做什么用?

--runtime选项用于指定容器运行时。默认情况下,Docker使用runc作为容器运行时。通过--runtime=nvidia选项,Docker将使用NVIDIA Container Toolkit提供的nvidia-container-runtime,自动配置容器以使用GPU。

3.4、为什么选择 Ubuntu?

选择Ubuntu的原因包括:

  • 微软WSL文档推荐使用基于glibc的发行版,如Ubuntu或Debian。
  • Ubuntu在开发者社区中使用广泛,兼容性好。

四、参考资料

  1. NVidia 官方文档站点
  2. Docker Desktop 官方站点
  3. 如何使用 WSL 在 Windows 上安装 Linux
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号