Home / Microsoft / Windows / 【2026年最新版】Windows 11 WSL CUDAとNVIDIA Docker連携の対処法【完全ガイド】

【2026年最新版】Windows 11 WSL CUDAとNVIDIA Docker連携の対処法【完全ガイド】

※本ページにはプロモーション(広告)が含まれています

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 GPU pass-through有効化

この記事でわかること

  • 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でドライバーバージョンを確認する方法:

  1. スタートメニューで「デバイスマネージャー」を開く
  2. 「ディスプレイアダプター」→ NVIDIAのGPUを右クリック
  3. 「プロパティ」→「ドライバー」タブでバージョンを確認

または PowerShell で:

Get-WmiObject Win32_VideoController | Select-Object Name, DriverVersion

古い場合は NVIDIAドライバーダウンロードページから最新版をインストールしてください。

設定ミス3:WSL2カーネルが古い

WSL2カーネルが古い場合もCUDAが正常に動作しません。

PowerShell(管理者)で確認・更新:

wsl --version
wsl --update
NVIDIA Container Toolkit導入

正しい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以上
Dockerイメージ確認とテスト
🛒

この記事に関連するおすすめ商品

NVIDIA GeForce RTX 4060 Ti グラフィックボード

約62,000円〜

CUDA 12.x対応・WSL2 GPU パススルー対応・16GB VRAM

🛒 Amazonで探す

Crucial 64GB DDR5 メモリ(WSL2 機械学習向け)

約28,000円〜

WSL2 + Docker GPU環境での大規模学習に最適

🛒 Amazonで探す

Samsung 990 Pro SSD 2TB NVMe(WSL2 高速ストレージ)

約28,000円〜

WSL2の仮想ディスクを高速SSDに配置してI/Oボトルネック解消

🛒 Amazonで探す

※ 価格は変動します。最新価格はリンク先でご確認ください

よくある質問(FAQ)

Q. nvidia-smi が正常に動くのにnvcc –version が見つからない場合は?
A. これはCUDAランタイム(libcuda.so)はWindowsドライバー経由で機能しているが、CUDAコンパイラ(nvcc)がWSL2 Linuxにインストールされていない状態です。cuda-toolkit-XX-X パッケージをインストールし、PATH を設定することで解決します。
Q. Docker Desktop と WSL2直接Dockerの違いは何ですか?
A. Docker Desktop for Windows はGUIを持ちWSL2バックエンドを内部で管理します。WSL2直接インストールはLinux内に直接docker-ceをインストールする方式です。どちらの場合も nvidia-container-toolkit の設定が必要ですが、Docker Desktopの場合はGUI設定の「GPU support」オプションの有効化も必要です。
Q. WSL2でGPUを使うとWindowsのゲームパフォーマンスに影響しますか?
A. WSL2でGPUを積極的に使っているとき(大規模な機械学習など)はGPUメモリ・CUDAコアを消費するため、同時にゲームを実行するとパフォーマンスが低下します。ゲームと機械学習の同時実行は避けることを推奨します。
Q. AMD GPUはWSL2でCUDAを使えますか?
A. AMD GPUはCUDAには対応していませんが、ROCm(Radeon Open Compute)がWSL2で動作します。ROCmを使うことでPyTorch などのフレームワークをAMD GPUで動かすことは可能ですが、対応状況はNVIDIA CUDAより限定的です。
Q. WSL2のCUDA環境でPyTorchを使う場合の注意点は?
A. PyTorchはCUDAバージョンに対応したビルドをインストールする必要があります。pip install torch でインストールした場合はデフォルトでCPU版がインストールされることがあります。CUDA対応版は PyTorch公式サイトのインストールコマンドジェネレータでCUDAバージョンを指定して取得してください(例:pip install torch –index-url https://download.pytorch.org/whl/cu123)。

まとめ

Windows 11のWSL2でCUDAとNVIDIA Dockerブリッジが動かない問題は、三層アーキテクチャ(Windowsドライバー・WSL2カーネル・CUDAツールキット)のどこかで設定が崩れることで発生します。

解決の優先順位はこの通りです。

  1. WSL2 Linux内のnvidia-driver-*を削除する
  2. Windowsのnvididriversを最新バージョンに更新する
  3. wsl –updateでWSL2カーネルを最新化する
  4. cuda-toolkit-XX-X(ドライバー除外版)を正しくインストールする
  5. nvidia-container-toolkitをインストールしてDockerのランタイムを設定する

最も多い失敗はWSL2内にNVIDIAドライバーをインストールしてしまうことです。WSL2では「Windowsドライバー=GPU制御」「Linuxにはツールキットのみ」という原則を守ることが成功のカギです。

Check Also

Windows 11 WSUSオフライン更新の承認同期失敗の対処法

【2026年最新版】Windows 11 WSUSオフライン更新の承認同期失敗の対処法【完全ガイド】

【2026年最新版】Windo …