Docker GPUエラー対処ガイド

エラーの原因

`could not select device driver "" with capability [[gpu]]` というエラーは、DockerコンテナがホストマシンのGPUにアクセスしようとした際に、必要なブリッジ役のソフトウェア、すなわち NVIDIA Container Toolkit がインストールされていないか、正しく設定されていないことが主な原因である。

Dockerは通常、GPUのような特殊なハードウェアを直接認識できない。そのため、ホストのNVIDIAドライバとコンテナ内を安全に連携させるための追加コンポーネントが必要となる。

解決手順

1. 前提条件: NVIDIAドライバの確認

まず、ホストマシンにNVIDIAドライバが正しくインストールされているか確認する。

nvidia-smi

GPUモデルやドライババージョンが表示されれば正常である。

2. NVIDIA Container Toolkit のインストール

使用しているLinuxディストリビューションに合わせてコマンドを実行する。

Ubuntu / Debian の場合:

# GPGキーとリポジトリの設定
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/stable/deb/nvidia-container-toolkit.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-get update

# パッケージをインストール
sudo apt-get install -y nvidia-container-toolkit

CentOS / RHEL の場合:

# リポジトリの設定
sudo curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
  sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo

# パッケージをインストール
sudo yum install -y nvidia-container-toolkit

3. Dockerデーモンの再起動

設定を反映させるためにDockerを再起動する。

sudo systemctl restart docker

4. 動作確認

テスト用のコンテナを起動し、コンテナ内からGPUが認識できるか確認する。

docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi

コンテナが起動し、`nvidia-smi`の出力が表示されれば成功である。