DockerコンテナからNVIDIA GPUを利用するためのNVIDIA Container Toolkit
【目次】
【サイト内の関連ページ】
- Windows の基本操作・コマンド操作・設定と、アプリ・開発環境・ローカル AI の導入
- Linux基本コマンドとその活用法:別ページで説明
1. 前提条件
本手順は,Windows上のDocker Desktop(WSL2バックエンド)でUbuntuコンテナを利用する構成を前提とする。以下の条件を満たす必要がある。
- NVIDIA製GPUがホストのWindowsマシンに搭載されていること
- Windows用のNVIDIAドライバがインストール済みであること(WSL2上のコンテナからは,このWindows側ドライバを通じてGPUが利用される)
- WSL2が有効化され,Docker DesktopがWSL2バックエンドで動作していること
- Docker Desktopがインストール済みであること
以降のaptコマンドは,Ubuntuコンテナ内(またはWSL2上のUbuntu)で実行する。
DockerコンテナからGPUを利用することで,CUDA(NVIDIA GPU向けの並列計算プラットフォーム)およびcuDNN(深層学習向けライブラリ)のバージョン管理が容易になり,異なるバージョンの環境を複数のコンテナで使い分けることができる。
2. NVIDIA Container Toolkitのインストール
NVIDIA Container Toolkitは,DockerコンテナからGPUにアクセスするためのソフトウェアである。Windows上のDocker Desktop(WSL2バックエンド)構成では,WSL2上のUbuntu環境で以下のコマンドを実行してインストールする。インストール後,設定を反映させるためにDockerを再起動する(Docker Desktopを再起動するか,下記コマンドでサービスを再起動する)。
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
3. NVIDIA CUDAイメージからのコンテナの作成と開始
NVIDIA公式のCUDAイメージを使用してコンテナを作成する。使用可能なタグは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情報が表示される。