dockerのインストールを行います。
sudo apt install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
rm get-docker.sh
sudo groupadd docker
# sudo 無しで実行するためのオプション設定
sudo usermod -aG docker $USER
# 再ログイン後にsudoなしで実行できることを確認
docker ps
docker-composeのインストールを行います。 最新のバーションについてはこちらから確認できます。
注意:docker-compose ver.2から「docker compose
」にコマンドが変更されています。
version=v2.0.1
curl -OL https://github.com/docker/compose/releases/download/$version/docker-compose-linux-x86_64
sudo mkdir -p /usr/local/lib/docker/cli-plugins
sudo mv docker-compose-linux-x86_64 /usr/local/lib/docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
# docker-composeでも実行できるようにする
cat <<EOF | sudo tee /usr/local/bin/docker-compose
#!/bin/bash
docker compose \$@
EOF
sudo chmod +x /usr/local/bin/docker-compose
docker compose ps
docker-compose ps
ここではUbuntuでのドライバのインストール方法を解説します。 Ubuntu以外の場合ではCUDA11.4.1に対応したドライバを導入してください。
注意:セキュアブートが有効な場合は予期しない操作が追加される場合があります。
搭載されているGPUに対して最適なドライバを検索します
ubuntu-drivers devices
# 出力
vendor : NVIDIA Corporation
model : TU104GL [Quadro RTX 5000]
driver : nvidia-driver-470 - distro non-free recommended ←推奨ドライバ
driver : nvidia-driver-460-server - distro non-free
driver : oem-fix-gfx-nvidia-ondemandmode - third-party free
driver : nvidia-driver-460 - distro non-free
driver : nvidia-driver-418-server - distro non-free
driver : nvidia-driver-450-server - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
今回の例ではnvidia-driver-470
が推奨されているためこれをインストールします。インストール完了後に再起動を行います。
sudo apt install nvidia-driver-470
sudo reboot
再起動後、nvidia-smi
を実行し、ドライバが正しく導入されていることを確認します。
nvidia-smi
Sat Oct 30 11:18:18 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.74 Driver Version: 470.74 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| 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 Quadro RTX 5000 Off | 00000000:3B:00.0 Off | Off |
| 33% 27C P8 17W / 230W | 15MiB / 16125MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
こちらを参考にnvidia-docker2
のインストールを行います。
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
コンテナ内でnvidia-smi
が実行できることを確認します
。
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.74 Driver Version: 470.74 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| 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 Quadro RTX 5000 Off | 00000000:3B:00.0 Off | Off |
| 33% 27C P8 18W / 230W | 15MiB / 16125MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
この章ではSHINtube-video-apiの起動を行います。
githubからレポジトリを取得します。
git clone https://github.com/penM000/SHINtube-video-api
取得したレポジトリ内には、
docker-compose-general.yml
およびdocker-compose-nvenc.yml
があります。
このうちどちらかを、docker-compose.yml
にコピーします、
nvidiaによるハードウエアエンコードを行う場合には、docker-compose-nvenc.yml
をコピーしてください。
cd SHINtube-video-api
# vaapi ソフトウエアエンコード用
cp ./docker-compose-general.yml docker-compose.yml
# nvenc vaapi ソフトウエアエンコード用
cp ./docker-compose-nvenc.yml docker-compose.yml
docker-compose.yml
内には、動画の保存場所に関する設定があります。
デフォルトでは、クローンされたレポジトリ内のvideo
フォルダを参照しています。
保存先を変更する場合は./video
を他のパスに変更してください。
volumes:
videodata:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '$PWD/video' # 動画の保尊先として利用するパスに変更する
もし、一度作成してしまった場合、上記で宣言したvolumesは削除されません。 そのため、volumesの変更を行う場合は下記のコマンドでvolumesの削除を行う必要があります。 (ホストのバインドマウントの場合はファイルは消えません)
docker-compose down --volumes --remove-orphans
次にコンテナイメージの作成を行います。注意:nvencの場合時間がかかります
docker-compose build --no-cache
システムの起動を行います。
docker-compose up -d
補足:「nvidia version mismatch」のエラーメッセージが出た場合はシステムを再起動してください
- 起動確認
curl http://127.0.0.1:8000/
# 結果
{"message":"Hello Bigger Applications!"}
- エンコードテスト 期待するエンコーダーが利用可能であることを確認
注意:「nvenc・vaapi・software」の順にどれか一つが有効になります。
curl http://127.0.0.1:8000/encode_test
# 結果
{"vaapi":false,"nvenc_sw_decode1":true,"nvenc_sw_decode2":true,"software":false}