Docker不要!WSL Containers(wslc)でLocal LLMをGPU爆速起動する実践ガイド

WSL ContainersとGPUパススルーによるLocal LLM高速起動の解説図 AI活用

Windows環境でAI開発やLocal LLMを動かそうとしたとき、Docker Desktopの起動待ち時間や、バックグラウンドで数十GBもメモリを食い潰す「vmmem」プロセスに頭を抱えた経験はないでしょうか?「ローカルでLLMをサクッと推論させたいだけなのに、なぜこんなに大がかりな仮想化基盤を用意しなければならないのか……」と感じていた方も多いはずです。

結論から言えば、WSL 3.0(2026年9月末リリース)で正式登場した「WSL Containers(wslcコマンド)」を使えば、Docker Desktopを一切起動することなく、Windows標準の機能だけでNVIDIA GPUを完全パススルーしたLinuxコンテナを瞬時にビルド・実行できます。常駐デーモンが存在しないため、コンテナを終了すればVRAMもメインメモリも即座にホストへ返却されます。

この記事では、GeForce RTX 3060搭載の実機環境を用いて、実際にWSL ContainersでCUDA環境およびLocal LLM(Ollama)を立ち上げた実測検証ログを交えながら、Docker Desktopとのアーキテクチャの違い、劇的なメリット、そして現状採用してはいけないアンチパターン(弱点)までを包み隠さず解説します。

WSL Containers(wslc)とは何か?Docker Desktop不要の革新

WSL 3.0で正式搭載された「デーモンレス」な新コンテナ機能

WSL Containersとは、MicrosoftがWSL(Windows Subsystem for Linux)のバージョン3.0.1において一般提供(GA)を開始した、WindowsネイティブのLinuxコンテナ実行エンジンです。操作にはコマンドプロンプトやPowerShellから直接叩けるwslcコマンド(エイリアス: container.exe)を使用します。

従来のDocker Desktop環境と最大の違いは、「バックグラウンドで常に動き続けるデーモン(Docker Daemon)が不要である」という点です。必要なコンテナを実行する瞬間だけ軽量なマイクロVMが起動し、コンテナプロセスを直接サンドボックス内で駆動させます。従来のWSL2が持っていたLinuxバイナリの実行性能をそのまま生かしつつ、Docker互換に近いCLI操作感を実現しています。

なぜ今、Windowsのコンテナ環境が見直されているのか

近年のローカルAIブームにより、エンジニアの手元マシンで7B〜14BクラスのLLMや画像生成モデルを動かす機会が急増しました。しかし、Windows上でCUDA環境を整備するのはドライバのバージョン競合やパス設定などトラブルの温床になりがちです。一方でDocker Desktopを常用すると、アイドル時でも大量のメモリが専有され、大企業では商用利用ライセンスの規約管理も重荷になっていました。

以前書いたLLMのトークン節約術でも触れたように、開発現場ではAPI利用料を抑えてプライバシーを守るためにローカル実行環境の整備が進んでいますが、環境構築自体のオーバーヘッドが大きくては本末転倒です。WSL Containersは、OS標準のコンポーネントとしてOSとGPUにゼロ距離で統合されることで、このジレンマを一気に解消するブレイクスルーとして注目を集めています。

  • 完全なデーモンレスアーキテクチャ: 常駐エンジンがなく、メモリやCPUのバックグラウンド消費を徹底排除。
  • GPUパススルー標準対応: ホストのNVIDIAドライバさえあれば、--gpus all オプション1つでCUDAが即開通。
  • Windows標準機能で追加コストゼロ: WSLの通常アップデートだけで利用可能。追加インストーラやサードパーティライセンスが不要。

このように、OS標準の軽量基盤として手軽にLinuxコンテナを扱えるようになったことが、今回のアップデートの大きな意義です。

A simple, clean explanatory infographic illustration comparing Docker Desktop

Docker DesktopとWSL Containersの違いを徹底比較

アーキテクチャとリソース消費の決定的な違い

端的に言って、WSL ContainersとDocker Desktopは「どちらが上位互換か」という関係ではなく、「設計思想と得意分野が根本から異なるツール」です。Docker Desktopが「統合管理GUIとエコシステム全体を提供するフルスタック開発スイート」であるのに対し、WSL Containersは「WindowsとLinuxを直結するミニマルなランタイム」に特化しています。

エンジニアが選定を行う上で把握しておくべき両者のスペックと仕様の違いを、以下の比較表に整理しました。

比較項目 Docker Desktop WSL Containers (wslc)
アーキテクチャ 共有VM上で常駐Dockerデーモンが稼働 デーモンレス(独立した軽量マイクロVMで直接起動)
メモリ消費 (アイドル時) vmmemプロセスが数GB〜十数GBを常時専有しやすい コンテナ停止時はゼロ(管理VMも不要時に即解放)
GPU (CUDA) 設定 ホスト設定+Docker設定+Toolkitの整合性確認が必要 WindowsホストドライバのみでOK(--gpus all で完結)
ライセンス / 費用 大企業(250名超または売上1,000万ドル超)では有償契約必須 Windows OS標準機能(無償・商用利用制限なし)
マルチコンテナ (Compose) docker compose をネイティブ完全サポート 現状ネイティブ非対応(単体コンテナ起動が基本)
管理インターフェース リッチなGUIダッシュボード+CLI コマンドライン(CLI)のみ
企業セキュリティ管理 Docker Businessや独自設定での管理 Microsoft Defender、Intune、グループポリシーに直結

手軽さの代償:現状の制約と「wslc compose」の壁

WSL Containersは非常に軽量ですが、現時点での最大の弱点は「docker compose に相当するマルチコンテナオーケストレーションが公式には未実装であること」です。compose.yaml に複数のサービス(フロントエンド、API、PostgreSQL、Redisなど)を定義して一発起動するようなWeb開発ワークフローは、そのままでは再現できません。

複数のコンテナを動かす場合は、個別にwslc runを実行してネットワークを繋ぐか、有志が公開しているブリッジツール(wslc-compose等)を挟む必要があります。Microsoftも今後の優先課題としてCompose対応を掲げていますが、現段階では「単体完結する開発環境やスクリプト実行、推論サーバー」にスコープを絞るのが賢明な付き合い方と言えます。

💡 あわせて読みたい

GitHub Copilotのプロンプト最適化で開発速度を最大化する実践テクニック

A simple, clean explanatory workflow diagram showing Windows GPU passthrough

【実測検証】RTX 3060でLocal LLM(Ollama)をGPU爆速起動する

前提条件とWSL 3.0へのアップデート手順

WSL Containersを動作させるための条件は極めてシンプルです。Windows 11または最新のWindows 10環境で、管理者権限のPowerShellからWSLを更新するだけで準備が完了します。

更新が完了したら、wslc --help を実行してヘルプメッセージが表示されることを確認します。これだけで、コンテナ実行基盤のインストールは完了です。

検証1:--gpus all でNVIDIA GPUを瞬時にマッピング

まず、Windowsホストに搭載されているNVIDIA GeForce RTX 3060(12GB VRAM)が、コンテナ内から正常に見えるかを検証しました。従来のDockerで最も躓きやすかった「NVIDIA Container Toolkit」をインストールする作業は一切不要です。

実行したところ、初回イメージのプルを含めてわずか数十秒で以下の通り、ホスト側のGPUドライバ(Driver Version 596.36 / CUDA 13.2)とハードウェアが直接認識されました。

WSL 2のGPU準仮想化(GPU-PV)レイヤーがコンテナ内まで透過的に貫通しているため、特別な追加設定なしでCUDAが利用可能になっていることが確認できます。

検証2:Ollamaコンテナの立ち上げとGPU自動認識ログ

続いて、Local LLMの実行基盤として広く使われている「Ollama」をバックグラウンドコンテナとして起動します。ポートフォワーディング(-p 11434:11434)を指定して、Windowsホスト側から直接APIを叩けるように設定します。

起動後、PowerShellからコンテナ一覧の確認と、OllamaのヘルスチェックエンドポイントへHTTPリクエストを送信しました。

その結果、127.0.0.1:11434 へのバインドが即座に完了し、Ollama is running というレスポンスが返ってきました。さらに、wslc logs ollama で内部ログを追跡したところ、以下の決定的なエビデンスが確認できました。

Ollamaのランタイムが、コンテナ内のCUDAデバイスとしてGeForce RTX 3060(VRAM 12.0 GiB)を自動識別し、GPU推論モード(compute 8.6)でスタンバイに入っていることがはっきりと分かります。Docker Desktopを経由したときと全く同じ、あるいはそれ以上に軽快な挙動です。

検証3:停止と同時にメモリを完全返却する省エネ設計

実験が終わったら、コンテナを停止します。起動時に --rm フラグを付与していたため、停止と同時にコンテナは自動破棄されます。

Docker Desktopの場合、コンテナを停止してもDocker Engine自体の仮想マシンが大量のRAMをキャッシュしたまま保持し続けるため、タスクマネージャーの「vmmem」が数GB〜十数GB食ったままになるのが日常茶飯事でした。しかしWSL Containersでは、コンテナプロセスの終了に合わせて管理リソースが即座に解放され、マシンのファンがすっと静かになります。この軽快さは日常使いにおいて非常に大きなアドバンテージです。

A simple, clean decision guide diagram showing when to choose WSL Containers

実務でどう活かす?推奨ユースケースと採用してはいけないアンチパターン

圧倒的な効果を実感できる3つの推奨シナリオ

今回の検証を踏まえ、現場でWSL Containersを採用することで劇的な恩恵を受けられるシナリオは以下の3つです。

  1. Local LLM・画像生成サーバーのオンデマンド運用: Ollama、vLLM、ComfyUIなど、重いGPUコンテナを「必要なときだけ立ち上げて、使い終わったら綺麗さっぱり消したい」という用途に最適です。ホストのWindows環境をPythonパッケージやCUDAの依存関係で汚す心配が一切ありません。
  2. メモリ16GB以下のモバイル開発マシンでの検証: 限られたRAMリソースの中で作業しているノートPC環境では、Docker Desktopの常駐負荷は致命的です。WSL Containersなら作業時以外のリソース消費がゼロなので、快適なマルチタスクが維持できます。
  3. 企業ポリシーでDocker Desktopの導入が制限されている職場: 大企業での有償ライセンス問題や、セキュリティ審査の壁によってサードパーティ製コンテナソフトが入れられない環境でも、Windows標準のWSL機能であれば社内ポリシーをクリアしやすいという強みがあります。

現時点で採用すべきでないアンチパターン(向かない用途)

一方で、何でもWSL Containersに置き換えようとするのは危険です。以下のユースケースでは、依然としてDocker DesktopやPodmanの利用を強く推奨します。

  • 複数コンテナで構成されるWebシステム開発: docker compose によるネットワーク定義、環境変数展開、依存関係管理(depends_on)に頼っているRails/Django/Node.js等のプロジェクトをWSL Containersへ無理に移行すると、起動スクリプトの自作で多大な工数を浪費します。
  • GUIでのコンテナ操作に依存しているチーム: CLIに不慣れなメンバーが混在するチーム開発では、Docker DesktopのGUIによるログ閲覧、ターミナル接続、ボリューム管理が強力な武器になります。完全CUIであるwslcは学習コストがかかります。
  • 本番Kubernetes環境のローカル再現(Kind / minikube): 高度な仮想ブリッジネットワークや特権モード(privileged)を駆使するクラスタシミュレーションは、現状のWSL Containersでは動作が不安定になるケースがあります。

今後の展望とエンジニアとしての所感

WSL Containersの登場によって、長年「コンテナといえばDocker Desktop一強(あるいは代替のRancher/Podman)」だったWindowsの開発環境に、OS標準という強烈な第3の選択肢が加わりました。特にAIエンジニアにとっては、GPUパススルーの手間がゼロになったことの心理的・時間的コスト削減は計り知れません。

個人的には、Microsoftが公式ロードマップで掲げている「Compose仕様への対応」が実現した瞬間に、ローカル開発の勢力図が完全に塗り替わるのではないかと感じています。現状は単体コンテナでのAI推論や使い捨て検証からスタートし、機能の成熟度を見極めながら徐々に適用範囲を広げていくのが最も賢明なアプローチと言えるでしょう。

よくある質問(FAQ)

Q1: コンテナ内に nvidia-container-toolkit をインストールする必要はありますか?

A: 一切不要です。Windowsホスト側に最新のNVIDIAディスプレイドライバがインストールされていれば、WSL 3.0が備えるGPU準仮想化(GPU-PV)技術により、コンテナ実行時に --gpus all を指定するだけで自動的にデバイスが認識されます。コンテナ側で余計なセットアップを行う必要はありません。

Q2: Docker Composeファイル(compose.yaml)はそのまま動きますか?

A: 現状はネイティブ対応していません。wslc compose サブコマンドは現在開発中のステータスです。現時点でマルチコンテナを動かす場合は、各コンテナを個別にwslc runで立ち上げるか、コミュニティ製の変換ラッパーを利用する必要があります。本格的なマルチコンテナ開発には現時点ではDocker Desktopの利用を推奨します。

Q3: 既存のUbuntu環境や他のWSLディストリビューションに影響はありますか?

A: 影響ありません。完全に独立して動作します。WSL Containersは専用のシステムセッション内でコンテナ管理マイクロVMを起動するため、既存のUbuntuやDebianなどのWSLディストリビューションのファイルシステムや設定を破壊することはありません。安心して併用できます。

まとめ

Windows環境におけるコンテナ技術の最新進化「WSL Containers(wslc)」のポイントを振り返ります。

  • Docker不要のネイティブ実行: WSL 3.0から標準搭載され、サードパーティツールなしでLinuxコンテナを操作可能。
  • Local LLMに最適なGPUパススルー: ホストのNVIDIAドライバだけで、--gpus all によるCUDAアクセラレーションが即座に開通。
  • 常駐デーモンなしの圧倒的な軽さ: アイドル時のメモリ消費がゼロで、停止と同時にリソースがホストへ完全返却される。
  • 現時点での割り切りが必要: compose.yaml には未対応のため、複数コンテナ連携ではなく「単体AI推論サーバー」や「使い捨て検証環境」に絞って導入するのがベスト。

Docker Desktopの重さに悩んでいた方や、手元のWindowsマシンで手軽にLocal LLMを試してみたいエンジニアの方は、ぜひ wsl --update を実行して、この新しい快適さを体感してみてください!


参考リンク・関連記事

タイトルとURLをコピーしました