※本ページにはプロモーション(広告)が含まれています
Windows 11のWSLでCUDAツールキットとNVIDIA Dockerブリッジが動かない問題を解決する
Windows 11のWSL2(Windows Subsystem for Linux 2)でCUDAツールキットをインストールしたのにGPUが認識されない、またはNVIDIA Dockerブリッジ(nvidia-container-runtime)が機能せずDockerコンテナ内でGPUを使えない——こんな問題で詰まっていませんか?
この問題はWindowsのNVIDIAドライバー・WSL2カーネル・CUDAドライバーの三層構造を正しく理解していないと解決が非常に難しい問題です。本記事では原因の特定から解決手順まで、コマンド付きで徹底解説します。

この記事でわかること
- WSL2とNVIDIA CUDAの三層アーキテクチャの仕組み
- よくある3つの設定ミスと診断方法
- WSL2カーネルバージョンとCUDAの対応関係
- NVIDIA Dockerブリッジのセットアップ手順
- 動作確認コマンドと問題の切り分け方法
WSL2 + CUDA の三層アーキテクチャを理解する
この問題を解決するには、WSL2上でのCUDA動作がどのような仕組みで成立しているかを理解することが不可欠です。
層1:Windows側 NVIDIAドライバー(ホスト)
Windows上にインストールされたNVIDIAドライバー(バージョン470.76以上)がWSL2カーネルのGPUパススルーのゲートキーパーになります。このドライバーに「WSL2用のGPUカーネルドライバー(dxgkrnl)」が含まれており、WindowsカーネルがLinuxカーネルにGPUアクセスを仮想化して提供します。
層2:WSL2 Linux カーネル(ブリッジ)
MicrosoftがカスタマイズしたLinuxカーネル(5.10以上)がWindows側のGPUドライバーと通信し、Linux内アプリケーションにGPUアクセスを提供します。WSL2のLinux内には通常のNVIDIAドライバーをインストールしてはいけません(Windowsドライバーと競合する)。
層3:CUDA ツールキット(アプリケーション層)
WSL2 Linux内にインストールするCUDAツールキットは、GPU本体のドライバーを含まないライブラリのみのバリアントを使用します。具体的には「cuda-toolkit-XX-X」パッケージであり「cuda」メタパッケージ(ドライバー込み)をインストールしてしまうと競合が発生します。
よくある3つの設定ミスと診断方法
設定ミス1:WSL2 Linux内にNVIDIAドライバーをインストールしてしまう
最もよくある間違いです。Linux(Ubuntu)の一般的なCUDAインストール手順を参考にすると、apt経由でNVIDIAドライバーがインストールされてしまいます。
診断コマンド(WSL2 Linux内で実行):
ls /usr/lib/x86_64-linux-gnu/libcuda.so* 2>/dev/null || echo "CUDA runtime not found"
dpkg -l | grep nvidia-driver
「nvidia-driver-XXX」が表示された場合は競合状態です。以下のコマンドで削除します。
sudo apt-get remove --purge nvidia-driver-* -y
sudo apt-get autoremove -y
設定ミス2:Windowsドライバーのバージョンが古い
CUDA 12.xを使う場合はNVIDIAドライバー525.60.13以上が必要です。
Windowsでドライバーバージョンを確認する方法:
- スタートメニューで「デバイスマネージャー」を開く
- 「ディスプレイアダプター」→ NVIDIAのGPUを右クリック
- 「プロパティ」→「ドライバー」タブでバージョンを確認
または PowerShell で:
Get-WmiObject Win32_VideoController | Select-Object Name, DriverVersion
古い場合は NVIDIAドライバーダウンロードページから最新版をインストールしてください。
設定ミス3:WSL2カーネルが古い
WSL2カーネルが古い場合もCUDAが正常に動作しません。
PowerShell(管理者)で確認・更新:
wsl --version
wsl --update

正しいCUDAツールキットのインストール手順
Step 1:既存のCUDA関連パッケージをクリーンアップ
WSL2 Ubuntu内で実行します。
sudo apt-get remove --purge cuda* libcuda* nvidia* -y
sudo apt-get autoremove -y
sudo apt-get clean
Step 2:NVIDIA CUDA リポジトリを追加
Ubuntu 22.04(CUDA 12.3の場合):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
Step 3:ドライバー除外でCUDAツールキットのみインストール
重要:「cuda」ではなく「cuda-toolkit-XX-X」を指定します。
sudo apt-get install cuda-toolkit-12-3 -y
Step 4:環境変数を設定
~/.bashrc または ~/.zshrc に追記します。
export PATH=/usr/local/cuda-12.3/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.3/lib64:$LD_LIBRARY_PATH
source ~/.bashrc
Step 5:動作確認
nvidia-smi
nvcc --version
「nvidia-smi」コマンドでGPU情報が表示されればCUDA環境は正常です。
NVIDIA Dockerブリッジ(nvidia-container-toolkit)のセットアップ
DockerコンテナからGPUを使うには、nvidia-container-toolkitのインストールが必要です。WSL2での設定は通常のLinuxと一部異なります。
Step 1:Dockerのインストール確認
WSL2内でDockerを使う場合は「Docker Desktop for Windows」を使う方法と、WSL2内にDockerを直接インストールする方法があります。Docker Desktopの場合はGUI設定でWSL2 integrationを有効にしてください。
Step 2:nvidia-container-toolkitのインストール
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
Step 3:Dockerデーモンの設定
sudo nvidia-ctk runtime configure --runtime=docker
sudo service docker restart
Step 4:GPU使用確認
docker run --rm --gpus all nvidia/cuda:12.3-base-ubuntu22.04 nvidia-smi
GPU情報が表示されれば設定完了です。
問題別:エラーメッセージと対処法
| エラーメッセージ | 原因 | 対処法 |
|---|---|---|
| NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver | Windowsドライバーが古い または WSL2カーネルが古い | Windowsドライバー更新 → wsl –update |
| libcuda.so.1: cannot open shared object file | CUDA ランタイムが見つからない(パス未設定) | LD_LIBRARY_PATH に /usr/local/cuda/lib64 を追加 |
| Error: No NVIDIA GPU was found | WSL2内にNVIDIAドライバーがインストールされている | nvidia-driver-* を purge で削除 |
| docker: Error response from daemon: could not select device driver “” with capabilities: [[gpu]] | nvidia-container-toolkit が未設定 | nvidia-ctk runtime configure → docker restart |
| CUDA error: no kernel image is available for execution on the device | CUDAバージョンとGPUアーキテクチャの不一致 | GPUのCompute Capabilityを確認してCUDAバージョンを合わせる |
WSL2バージョンとCUDAの互換性マトリクス
| CUDA バージョン | 必要なNVIDIAドライバー(Windows) | 推奨WSL2カーネル |
|---|---|---|
| CUDA 11.x | 470.76以上 | 5.10.43.3以上 |
| CUDA 12.0〜12.2 | 525.60.13以上 | 5.15.90.1以上 |
| CUDA 12.3〜12.4 | 545.23以上 | 6.1.21.2以上 |
| CUDA 12.5以上 | 555.42以上 | 6.6.36.6以上 |

この記事に関連するおすすめ商品
NVIDIA GeForce RTX 4060 Ti グラフィックボード
約62,000円〜
CUDA 12.x対応・WSL2 GPU パススルー対応・16GB VRAM
Crucial 64GB DDR5 メモリ(WSL2 機械学習向け)
約28,000円〜
WSL2 + Docker GPU環境での大規模学習に最適
Samsung 990 Pro SSD 2TB NVMe(WSL2 高速ストレージ)
約28,000円〜
WSL2の仮想ディスクを高速SSDに配置してI/Oボトルネック解消
※ 価格は変動します。最新価格はリンク先でご確認ください
よくある質問(FAQ)
まとめ
Windows 11のWSL2でCUDAとNVIDIA Dockerブリッジが動かない問題は、三層アーキテクチャ(Windowsドライバー・WSL2カーネル・CUDAツールキット)のどこかで設定が崩れることで発生します。
解決の優先順位はこの通りです。
- WSL2 Linux内のnvidia-driver-*を削除する
- Windowsのnvididriversを最新バージョンに更新する
- wsl –updateでWSL2カーネルを最新化する
- cuda-toolkit-XX-X(ドライバー除外版)を正しくインストールする
- nvidia-container-toolkitをインストールしてDockerのランタイムを設定する
最も多い失敗はWSL2内にNVIDIAドライバーをインストールしてしまうことです。WSL2では「Windowsドライバー=GPU制御」「Linuxにはツールキットのみ」という原則を守ることが成功のカギです。
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!