DockerコンテナからNVIDIA GPUを利用するためのNVIDIA Container Toolkit

概要

Windows上でDocker Desktop(WSL2バックエンド)を用い,DockerコンテナからNVIDIA GPUを利用するための設定手順を解説する。Docker Desktopに同梱されたNVIDIA Container ToolkitによるGPUサポートの有効化と,NVIDIA公式CUDAイメージを用いたコンテナの作成・開始手順を説明する。

目次

関連する外部ページ

公式ドキュメント:https://docs.nvidia.com/datacenter/cloud-native/

サイト内の関連情報

1. 前提条件

本手順は,Windows上のDocker Desktop(WSL2バックエンド)でUbuntuコンテナを利用する構成を前提とする。以下の条件を満たす必要がある。

本手順のdockerコマンドは,WSL2上のUbuntuのターミナル,またはWindowsのコマンドプロンプト/PowerShellで実行する。

DockerコンテナからGPUを利用することで,CUDA(NVIDIA GPU向けの並列計算プラットフォーム)およびcuDNN(深層学習向けライブラリ)のバージョン管理が容易になり,異なるバージョンの環境を複数のコンテナで使い分けることができる。

2. NVIDIA Container ToolkitによるGPUサポートの有効化

NVIDIA Container Toolkitは,DockerコンテナからGPUにアクセスするためのソフトウェアである。Windows上のDocker Desktop(WSL2バックエンド)では,このツールキットがDocker Desktopに同梱されており,利用者が個別にインストールする必要はない。

Docker Desktopは,GPU準仮想化(GPU-PV)によって,コンテナからGPUを利用できるようにする。第1章の前提条件(WSL2のGPU-PVに対応した最新のNVIDIAドライバ,最新のWSL2カーネル,Docker DesktopのWSL2バックエンド)を満たしていれば,docker run--gpus allを付けるだけで,コンテナからGPUを利用できる。

GPUが正しく利用できるかは,次章でCUDAイメージのコンテナを作成し,nvidia-smiコマンドで確認する。

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

主要なオプションの説明は以下のとおりである。

コンテナ内でnvidia-smiコマンドを実行すると,GPUの認識状況,ドライバのバージョン,メモリ使用量を確認できる。GPUが正しく認識されていれば,GPU情報が表示される。