Ubuntu 22.04にNVIDIA Container Toolkit (nvidia-docker)をインストール

Docker コンテナ上で NVIDIA のビデオカードの機能を利用できるようにするために、NVIDIA Container Toolkit (nvidia-docker)をインストールします。これにより、例えば FFmpeg がインストールされた Docker コンテナ上で、NVENC を使用したH.264、HEVC/H.265 ハードウェアエンコードを行うこともできるようになります。

私の環境

ハードウェア

NVIDIA ビデオカードMSI GeForce GTX 1050 2GT LP

ソフトウェア

OSUbuntu 22.04 (5.15.0-27-generic)
Docker20.10.14
NVIDIA Driver510.60.02
CUDA11.6

NVIDIA ドライバのインストール

Ubuntu 20.04 に NVIDIA ドライバをインストールする手順は、下記の投稿をご覧ください。

Docker のインストール

Ubuntu に Docker をインストールする手順は、docker.com で紹介されています。

https://docs.docker.com/engine/install/ubuntu/

sudo apt update
sudo apt install -y \
  ca-certificates \
  curl \
  gnupg \
  lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg  
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world

NVIDIA Container Toolkit (nvidia-docker) のインストール

Ubuntu に NVIDIA Container Toolkit をインストールする手順は、github.com, docker.com で紹介されています。

https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support)

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

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
sudo apt update
sudo apt install -y nvidia-docker2

動作確認

NVIDIA が提供している Docker イメージを起動し、nvidia-smi コマンドを実行できることを確認します。

sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

// 実行結果
Sat Apr 30 17:45:26 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.60.02    Driver Version: 510.60.02    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| 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 ...  Off  | 00000000:01:00.0  On |                  N/A |
| 46%   46C    P0    N/A /  75W |   1136MiB /  2048MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1692      G                                     770MiB |
|    0   N/A  N/A      1788    C+G                                      40MiB |
|    0   N/A  N/A      1828      G                                     119MiB |
|    0   N/A  N/A      2403      G                                      96MiB |
|    0   N/A  N/A      4635      G                                      68MiB |
|    0   N/A  N/A     10446      G                                      33MiB |
+-----------------------------------------------------------------------------+