エラーの原因
`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`の出力が表示されれば成功である。