351 words
2 minutes
让WSL中的Docker使用GPU

前言#

参考WSL官方文档NVIDIA官方文档进行配置1

使用环境:

  • Windows:Windows10 22H2
  • WSL: WSL2-2.3.26.0
  • Linux:Debian GNU/Linux 12 (bookworm)

WSL中安装Docker Engine#

  1. 在宿主机中安装NVIDIA GPU驱动。

  2. 在WSL中安装Docker Engine

curl https://get.docker.com | sh

重启Docker服务

sudo service docker start

安装NVIDIA Container Toolkit#

  1. 配置APT源
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

(可选)使用实验性软件包

sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
  1. 安装NVIDIA Container Toolkit
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

配置Docker#

  1. 配置容器运行时nvidia-ctk
sudo nvidia-ctk runtime configure --runtime=docker
  1. 重新启动Docker守护进程
sudo systemctl restart docker

检测Docker是否可以使用GPU#

使用debian: latest作为容器镜像,加入参数“runtime=nvidia”与“gpus all”启动容器:

sudo docker run --rm --runtime=nvidia --gpus all debian:latest nvidia-smi

看到类似输出:

Thu Nov 28 10:02:57 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 565.72                 Driver Version: 566.14         CUDA Version: 12.7     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 2060        On  |   00000000:01:00.0  On |                  N/A |
| N/A   35C    P8              7W /  115W |    1012MiB /   6144MiB |      4%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

现在Docker已经可以使用宿主机的GPU了。

Footnotes#

  1. 截止至2024-11-28,WSL文档里的部分内容与实际运行结果不一致。

让WSL中的Docker使用GPU
https://wsfcloud.github.io/posts/let-docker-in-wsl-use-gpu/
Author
风烟流云
Published at
2024-11-28