DockerコンテナからNVIDIA GPUを利用するための NVIDIA Container Toolkit
【概要】DockerコンテナからNVIDIA GPUを利用するための設定手順を解説する。NVIDIA Container Toolkitのインストール方法と、NVIDIA公式CUDAイメージを用いたコンテナの作成・開始手順を説明する。
【目次】
公式ドキュメント:https://docs.nvidia.com/datacenter/cloud-native/
1. 前提条件
本手順を実行するには、以下の条件を満たす必要がある。
- NVIDIA製GPUがホストマシンに搭載されていること
- NVIDIAドライバがホストマシンにインストール済みであること
- Dockerがインストール済みであること
- Ubuntu環境であること(本手順はaptコマンドを使用)
DockerコンテナからGPUを利用することで、GPU環境の構築を簡略化できる。CUDAやcuDNNのバージョン管理が容易になり、異なるバージョンの環境を複数のコンテナで使い分けることも可能である。
2. NVIDIA Container Toolkitのインストール
NVIDIA Container Toolkitは、DockerコンテナからホストマシンのGPUにアクセスするためのソフトウェアである。以下のコマンドでインストールを行い、Dockerサービスを再起動して設定を反映させる。
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
3. NVIDIA CUDAイメージからのコンテナの作成と開始
NVIDIA公式のCUDAイメージを使用してコンテナを作成する。CUDAはNVIDIA GPUで並列計算を行うためのプラットフォームである。使用可能なタグはhttps://hub.docker.com/r/nvidia/cuda/tagsで確認できる。
以下のコマンド例では、タグとして「nvidia/cuda:12.8.0-cudnn-devel-ubuntu24.04」を使用している。このタグは、CUDA 12.8.0、cuDNN(深層学習向けライブラリ)、開発用ツール一式、Ubuntu 24.04を含む構成である。
docker run --name myubuntu --restart unless-stopped -p 8888:8888 -it --gpus all nvidia/cuda:12.8.0-cudnn-devel-ubuntu24.04 /bin/bash
nvidia-smi
exit
主要なオプションの説明は以下のとおりである。
- --name myubuntu:コンテナに「myubuntu」という名前を付与する
- --restart unless-stopped:手動で停止しない限り、Docker起動時にコンテナを自動的に再開する
- -p 8888:8888:ホストのポート8888をコンテナのポート8888にマッピングする(Jupyter Notebook等で使用)
- --gpus all:ホストのすべてのGPUをコンテナから利用可能にする
コンテナ内でnvidia-smiコマンドを実行すると、GPUの認識状況、ドライバのバージョン、メモリ使用量などを確認できる。GPUが正しく認識されていれば、GPU情報が表示される。