Docker コンテナ上で NVIDIA のビデオカードの機能を利用できるようにするために、NVIDIA Container Toolkit (nvidia-docker)をインストールします。これにより、例えば FFmpeg がインストールされた Docker コンテナ上で、NVENC を使用したH.264、HEVC/H.265 ハードウェアエンコードを行うこともできるようになります。
目次
私の環境
ハードウェア
NVIDIA ビデオカード | MSI GeForce GTX 1050 2GT LP |
ソフトウェア
OS | Ubuntu 22.04 (5.15.0-27-generic) |
Docker | 20.10.14 |
NVIDIA Driver | 510.60.02 |
CUDA | 11.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 |
+-----------------------------------------------------------------------------+