WSL Containers使い方|Docker不要でComposeも動く

Windows上でコンテナ開発を行う際、「Docker Desktopのメモリ消費が重くて作業がつらい」「会社のPCで商用利用ライセンスの制約がある」といった悩みを抱えているエンジニアは少なくありません。

起動するたびにメモリを数GBも消費し、タスクトレイに常駐し続けるDocker Desktop。この課題を一変させるWindowsネイティブの新しいコンテナ実行基盤が、Microsoftの「WSL Containers(CLI名:wslc)」です。

WSL(Windows Subsystem for Linux)の拡張機能として動作するため、重い常駐デーモンやサードパーティ製アプリを介さず、Windowsのコマンドラインから直接Linuxコンテナを高速にビルド・起動できます。

この記事では、パブリックプレビューの提供が始まったWSL Containersの仕組みとメリット、プレビュー有効化手順から、wslcコマンドの基本操作、Webサーバー(Nginx)の立ち上げ、GPUパススルーによるローカルLLM(Ollama)の高速駆動、Docker Desktopとの違いや現在の制限事項までを実践検証に基づいて詳しく解説します。

この記事で行うこと

  • WSL Containersの概要と、Docker Desktopを使わずにコンテナを動かす仕組みを解説します
  • プレリリース版WSLを導入してwslcコマンドを有効化する手順を説明します
  • Docker互換コマンド(run, ps, build, stop)を使った基本的なコンテナ操作を解説します
  • ポートフォワーディングを設定してブラウザからコンテナへアクセスする実践例を紹介します
  • GPUパススルーを利用したローカルLLM(Ollama)の実行手順を解説します
  • 実務導入におけるメリット・注意点・現在の制限事項(Compose未対応など)をまとめます

前提条件と動作環境

項目内容
OSWindows 11 Pro、Enterprise、またはEducation(Windows 10 22H2 Pro以上も可)
CPU64bit互換CPU(Intel VT-x / AMD-V 有効)
メモリ8GB以上(ローカルLLM実行時は16GB〜32GB以上を推奨)
WSLWSL 2(プレリリース版 2.9.4以降)
機能仮想マシン プラットフォーム(有効)

注意点として、WSL ContainersはHyper-Vの分離コンテナ技術を使用するため、Windows Homeエディションでは動作しません。Pro以上のエディションをご用意ください。

注意点

  • WSL Containersは現在パブリックプレビュー段階にあります。ローカル開発や個人検証での利用が推奨されており、本番運用のCI/CD基盤への導入には注意が必要です。
  • Docker Compose(compose.yamlによる複数コンテナ一括起動)は現時点で公式未対応です。複数サービスを連携させる開発では、現状はDocker EngineやPodmanとの併用をご検討ください。

1. WSL Containersとは何か:なぜDocker Desktopが不要になるのか

WSL Containersは、WSL 2の内部に直接統合されたMicrosoft公式のコンテナランタイムです。

これまでWindows上でLinuxコンテナを動かすには、常駐型の仮想マシンとGUIアプリがセットになったDocker Desktopをインストールするのが標準的でした。しかし、Docker Desktopはバックグラウンドで数GBのメモリを常時消費する上、従業員250人以上または年間売上1,000万ドル以上の組織では有料ライセンスが必要です。

WSL Containersはこれらの問題を解消するために設計されました。

主な違いとアーキテクチャの比較

比較項目Docker DesktopWSL Containers(wslc)
開発元Docker社Microsoft
アーキテクチャ独自VM + 常駐DockerデーモンWSL 2ネイティブ統合(デーモンレス)
メモリ消費1GB〜数GB(常駐)必要なコンテナ実行時のみ(超軽量)
コマンド体系docker コマンドwslc(container)コマンド ※Docker互換
ライセンス大規模組織では商用有料ライセンスWindows標準機能(追加ライセンス費用なし)
Docker Compose完全対応現時点で未対応(単一コンテナ中心)
ハードウェア連携設定が必要GPU / NPUパススルーを標準サポート

常駐デーモンを持たない「デーモンレス構造」のため、コマンドを実行した瞬間にコンテナが立ち上がり、コンテナを停止すれば即座にリソースがWindows側へ解放されるのが最大の強みです。

2. WSL Containersの導入とセットアップ手順

WSL Containersを利用するには、WSLを最新のプレリリースビルドへ更新する必要があります。

手順1:PowerShellを管理者として起動する

スタートメニューを右クリックし、「ターミナル(管理者)」または「PowerShell(管理者)」を選択して起動します。

手順2:プレリリース版WSLへアップデートする

以下のコマンドを実行して、WSLを最新のプレリリース版(バージョン2.9.4以降)へ更新します。

wsl --update --pre-release

アップデートのダウンロードとインストールが完了したら、一度WSLを完全に終了して設定を反映させます。

wsl --shutdown

手順3:インストールの確認

ターミナルを再度開き、WSLおよびコンテナツールのバージョンを確認します。

wsl --version

出力結果でWSLのバージョンが2.9.4以上であることを確認したら、コンテナCLIが利用可能かチェックします。

wslc --version

バージョン番号が表示されれば、セットアップは完了です。 ※環境によっては container --version というエイリアスコマンドでも動作します。

3. 基本的なwslcコマンドの使い方(Docker互換)

wslc のコマンド体系は、エンジニアが使い慣れているDockerコマンドと高い互換性を持っています。

コンテナの起動(wslc run)

公式のNginxイメージを取得し、バックグラウンドで起動する例です。

wslc run -d -p 8080:80 --name my-web nginx
  • -d: バックグラウンド(デタッチモード)で実行
  • -p 8080:80: ホスト(Windows)のポート8080をコンテナのポート80に転送
  • --name my-web: コンテナに名前を付与

コンテナが起動したら、ブラウザで http://localhost:8080 にアクセスしてください。「Welcome to nginx!」の初期画面が表示されれば正常に動作しています。

実行中のコンテナ一覧確認(wslc ps)

wslc ps

起動中のコンテナID、イメージ名、ステータス、ポート転送設定が一覧で表示されます。停止中のコンテナも含めて確認したい場合は wslc ps -a を使用します。

ログの確認と対話的シェル起動

コンテナの標準出力を確認するには以下のコマンドを実行します。

wslc logs my-web

コンテナ内部のBashシェルに入って作業したい場合は、exec コマンドを使用します。

wslc exec -it my-web bash

コンテナの停止と削除

作業が完了したコンテナを停止・削除する手順です。

# コンテナの停止
wslc stop my-web

# コンテナの削除
wslc rm my-web

ローカルイメージの確認とビルド

ダウンロード済みのコンテナイメージ一覧を確認します。

wslc image ls

Dockerfileから独自のイメージをビルドする場合は、以下のように実行します。

wslc build -t my-custom-app:latest .

4. 応用編:GPUパススルーでローカルLLM(Ollama)を動かす

WSL Containersの非常に強力な機能の1つが、ハードウェアアクセラレーション(GPU / NPU)のネイティブサポートです。

NVIDIA製グラフィックボードを搭載したWindows PCであれば、追加のドライバー設定を行うことなく、コンテナ内からGPUを直接利用できます。

OllamaコンテナのGPU駆動例

ローカルLLM実行ツール「Ollama」をGPU有効化状態で起動します。

wslc run -d --gpus all -p 11434:11434 --name ollama ollama/ollama:latest

--gpus all フラグを付与するだけで、Windows上のNVIDIAドライバーをコンテナが自動認識し、GPUメモリを活用した超高速なLLM推論が可能になります。

モデルの取得と対話実行

コンテナ内でモデル(Googleの軽量モデルGemma 3など)をダウンロードしてチャットを起動します。

# モデルのダウンロード
wslc exec ollama ollama pull gemma3:4b

# チャットの起動
wslc exec -it ollama ollama run gemma3:4b

プロンプトが表示されたら日本語で質問を入力して対話できます。終了する場合は Ctrl + D または /bye を入力します。

REST APIでの疎通確認

別のPowerShellウィンドウから以下のコマンドを実行してAPI経由での動作確認も可能です。

Invoke-RestMethod -Uri "http://localhost:11434/api/tags"

5. うまくいかない場合の確認ポイント

  • wslc コマンドが見つからないエラー(command not found):
    • WSLのバージョンが2.9.4未満である可能性があります。wsl --update --pre-release を再度実行し、必ず wsl --shutdown で再起動してください。
  • 仮想化支援機能エラー(Hyper-V / VT-x):
    • BIOS/UEFI設定で「Intel VT-x」または「AMD-V」が有効になっているか確認してください。また、Windowsの機能で「仮想マシンプラットフォーム」がオンになっている必要があります。
  • ポートが競合してアクセスできない:
    • 指定したポート(8080や11434など)が他のアプリや既存のDocker Desktopで使われていないか、PowerShellで netstat -ano | findstr 8080 を実行して確認してください。

6. よくある質問

  • Q. Docker Desktopと同時にインストールして共存できますか?
    • A. 共存可能です。ポート番号やコンテナ名が重複しなければ、両方を同一のWindows環境上で同時にテスト・比較できます
  • Q. Docker Composeはいつ対応しますか?
    • A. Microsoftの公式ロードマップにおいてCompose互換性の開発が進められていますが、プレビュー初期段階では単一コンテナ操作が中心となります。当面はWSL2上のDocker EngineやPodmanとの併用をご検討ください
  • Q. Windows 11 Homeでも動きますか?
    • A. 動作しません。WSL Containersが要求するHyper-Vの分離サンドボックス機能がWindows Homeには含まれていないため、Windows 11 Pro以上のエディションが必要です
  • Q. 既存のDockerイメージはそのまま使えますか?
    • A. 使えます。WSL ContainersはOCI仕様に準拠しているため、Docker Hub等のレジストリに公開されているOCI互換イメージはそのまま動作します

7. まとめ

  • WSL Containers(wslc)は、Windows標準機能としてLinuxコンテナを直接動かせる次世代のコンテナ基盤です
  • 常駐デーモンを持たないため、Docker Desktopに比べて圧倒的に軽量で高速に起動します
  • wsl --update --pre-release を実行するだけで、すぐに最新のwslcコマンドを試すことができます
  • run、ps、buildなどお馴染みのDocker構文をそのまま使えるため学習コストが不要です
  • GPUパススルーを標準サポートしており、ローカルLLM(Ollama等)の実行環境としても極めて実用的です

次に読むおすすめ記事

WSL2とDockerを使ったWindows開発環境の構築手順や高速化設定、トラブル解決を体系的に学びたい方は、以下の完全ガイドもあわせて参考にしてください。

WSL2+Dockerで作るWindows開発環境構築まとめ
WindowsマシンでWeb開発やバックエンド開発、AIアプリ開発を行う際、いまや欠かせない標準構成となったのが「Windows + WSL2 + Docker + VS Code」の組み合わせです。かつては「Web開発といえばMac一択」…

参考情報