Docker GPUエラーの解決: nvidia-docker2インストール後のデバイスドライバー問題
問題の概要
公式ドキュメントに従ってnvidia-docker2
をインストールした後、 DockerコンテナでGPUを使用しようとすると次のエラーが発生することがあります:
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]. 3
この問題は、次のような状況で発生します:
- Ubuntu 22.04でNVIDIAドライバーが正常にインストールされている
- ホストマシンでは
nvidia-smi
コマンドは正常に実行できる sudo docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
テストコマンドでエラーが発生する- システムの再起動でも解決しない
原因となる主な要因
このエラーにはいくつかの典型的な原因があります:
- NVIDIA Container Toolkitがインストールされていない
- コンテナランタイムの設定が不完全
- Snap版Dockerと公式パッケージの競合
- CUDAツールキットの不足
解決方法
方法1: NVIDIA Container Toolkitの正規インストール(推奨)
公式ドキュメントに従いNVIDIA Container Toolkitをインストールします:
公式インストールガイド
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
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
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
方法2: Dockerの競合解決(Snap版削除)
Snap経由でインストールされたDockerが原因の場合は完全削除が必要:
sudo snap remove docker
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
削除後、公式手順でDockerを再インストールします:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
方法3: CUDAツールキットのインストール確認
必要なCUDAツールキットが欠落している場合:
WARNING
NVIDIAドライバーだけでは不十分でCUDAツールキットが必要
公式リポジトリから適切なCUDAバージョンをインストールしてください: NVIDIA CUDA Toolkit Archive
動作確認テスト
すべての設定後に次のコマンドでGPUアクセスを確認:
sudo docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
正常に動作するとホストのGPU情報が表示されます。
補足事項
- 再起動の重要性: 設定変更後は
sudo systemctl restart docker
を実行 - バージョン確認:
nvidia-container-toolkit --version
でインストールを確認 - ログ調査:
/var/log/nvidia-container-toolkit.log
で詳細なエラーを確認可能
まとめ
このエラーは主にNVIDIA Container Toolkitの不完全なインストールやSnap版Dockerとの競合が原因です。徹底的なアンインストール後の正規手順に基づく再インストールが最も効果的です。公式インストールガイドに従い、環境に適したドライバーとCUDAバージョンの選択が重要です。