Docker コンテナ内で GPU を使うためには NVIDIA Container Toolkit をインストールする必要があります。
公式ドキュメントは以下です。
インストール方法
上記のページにインストール手順も書いてあります。
(以下は見やすくするためにコマンドを分割しています。)
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
$ sudo apt update
$ sudo apt install -y nvidia-docker2
nvidia-docker2
がトップレベルのパッケージらしいので、インストールするときは nvidia-container-toolkit
ではなく nvidia-docker2
を指定するようです。
ここらへん以下のページが参考になりました。
まぁ公式ドキュメントが nvidia-docker2
をインストールするようになっていますし、それに従えばよいかと。
また、古い記事では nvidia-docker
と書いてあったりしますが、ここらへんの変遷は以下が参考になりました。
動作確認
nvidia-container-cli
で確認できます。
$ nvidia-container-cli --version
cli-version: 1.8.1
lib-version: 1.8.1
build date: 2022-02-14T12:02+00:00
build revision: abd4e14d8cb923e2a70b7dcfee55fbc16bffa353
build compiler: x86_64-linux-gnu-gcc-7 7.5.0
build platform: x86_64
build flags: -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -DNDEBUG -std=gnu11 -O2 -g -fdata-sections -ffunction-sections -fplan9-extensions -fstack-protector -fno-strict-aliasing -fvisibility=hidden -Wall -Wextra -Wcast-align -Wpointer-arith -Wmissing-prototypes -Wnonnull -Wwrite-strings -Wlogical-op -Wformat=2 -Wmissing-format-attribute -Winit-self -Wshadow -Wstrict-prototypes -Wunreachable-code -Wconversion -Wsign-conversion -Wno-unknown-warning-option -Wno-format-extra-args -Wno-gnu-alignof-expression -Wl,-zrelro -Wl,-znow -Wl,-zdefs -Wl,--gc-sections
$ nvidia-container-cli info
NVRM version: 470.103.01
CUDA version: 11.4
Device Index: 0
Device Minor: 0
Model: NVIDIA GeForce RTX 3080
Brand: GeForce
GPU UUID: GPU-565ac97c-fe71-f49b-1ac0-7ac93c7dab8d
Bus Location: 00000000:01:00.0
Architecture: 8.6