みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

DockerでCUDAを使用するための準備

GeForceなどCUDAに対応したグラフィックボードをDockerで使用するために必要な準備をまとめます.

結論

Docker EngineとNVIDIA Container Toolkit をインストールする.

環境

  • Ubuntu 22.04 LTS
  • Intel(R) Core(TM) i5-12400
  • NVIDIA GeForce GT 1030
  • Docker Engine 20.10.17

手順

Installation Guide — NVIDIA Cloud Native Technologies documentation

上記ウェブサイトに従います.NVIDIA Container Toolkitは,NVIDIA Driversに依存しているので,これを含むCUDA Toolkitをインストールするために以下のウェブサイトを利用します.

CUDA Toolkit 11.7 Downloads | NVIDIA Developer

提示されたスクリプトを実行すれば,https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64がaptに追加されます.これで,以下のコマンドでドライバーをインストールします.

sudo apt install cuda-drivers

Secure Bootを有効にしている場合は,パスワードの設定画面が表示されるので,適当に設定します.再起動してブート時にEnroll MOKして同じパスワードを入力します.

Dockerをインストールしていない場合は,インストールします.

次に,NVIDIA Container Toolkitをインストールします.以下のコマンドを実行するだけです.なお,コマンドは将来変更される可能性があるので,上記サイトより最新のものを確認して実行してください.

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && 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/$distribution/libnvidia-container.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

これでaptに追加されるので,nvidia-docker2をインストールします.

sudo apt install nvidia-docker2

動作確認

$ docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi -q

==============NVSMI LOG==============

Timestamp                                 : Wed Jun 15 05:13:53 2022
Driver Version                            : 515.48.07
CUDA Version                              : 11.7

Attached GPUs                             : 1
GPU 00000000:01:00.0
    Product Name                          : NVIDIA GeForce GT 1030
    Product Brand                         : GeForce
    Product Architecture                  : Pascal
...

正常にグラフィックボードの情報が出力されれば完了です.なお,--gpus all はDockerコンテナで全てのGPUを使用する設定です.CUDAを使用するコンテナを作成するには,nvidia/cudaイメージを使用するのが便利です.

https://hub.docker.com/r/nvidia/cuda

参考