Docker Desktop不要の時代が来る?WSL標準の「wslc」でLinuxコンテナを動かしてみた

Windows上でLinuxコンテナが直接動く「WSL container」がPublic Previewになった、というニュースを見かけました。最初にニュースを見たときは「これってもう使える機能なんだろうか?」というのが正直な感想でした。

devblogs.microsoft.com

調べてみると、答えは「使える…けれど正式版ではない」という温度感。ニュースを眺めているだけだとよくわからない部分も多かったので、今回は実際に手元のマシンに入れて試しています。「Docker Desktopをなんとなく入れているけど、中身は正直よくわかっていない」という感覚の人には関係してきそうな話です(自分もそちら側です😅)。

⚠️この記事の情報は2026年7月時点のものです。WSL containerは現在Public Preview(プレビュー版)の段階なので、正式リリースまでにコマンドや仕様が変わる可能性がありますのでご注意を!

また、こちらの内容を「なごあずの集い#9」(JAZUG 名古屋支部)にてLTした資料を以下に添付します。

speakerdeck.com

1. そもそもWindowsでLinuxコンテナを動かすには

本題に入る前に、少しだけ前提を整理しておきます。

これまでWindowsでLinuxコンテナ(Dockerコンテナ)を動かすには、これまでは次のような選択肢がありました。

  • Docker Desktopを入れる(一番メジャーな方法)
  • WSL2のUbuntuの中にDocker Engineを自分で入れる(WindowsのDocker Desktopと連携できるので実は意味は少ない)
  • Podmanなどの代替ツールを使う

多くの人は一番とっつきやすいDocker Desktop一択だと思います。自分も「とりあえずDocker Desktop」で済ませてきた側です😅

そこに今回、WSL自体にコンテナを動かす仕組みが組み込まれるという新しい選択肢が出てきたというわけです。

ニュースとしては…

  • 2026年6月2日 … Build 2026で「public previewが近日公開」として発表
  • 2026年6月29日 … WSL 2.9.3のリリースとともにPublic Preview開始
  • 一般提供(GA) … 2026年秋を目標(具体的な日付は未公表)

Microsoftとしては、Windows上のコンテナ開発が「サードパーティーツール依存」「ライセンスコスト」「企業側から見た管理のしにくさ」といった課題を抱えている、というのが背景があるのでしょう。つまり単なる便利機能というより、Windows上のLinuxコンテナ基盤をMicrosoft純正(first-party)に持っていくことも考えている?という動きなんですよね。

今回のこの機能を利用するには、現時点ではWSLのpre-release版を導入する必要があります。

⚠️Windows自体をInsider Previewにする必要はなく、WSL本体をpre-release版にするという形です。ここは混同しやすいので注意ですね。

2. WSL containerを簡単にいうと

WSL containerを一言でいうと、

「これまでUbuntuなどを動かしていたWSLに、Linuxコンテナを動かす入口も増えた」

という理解でよさそうです。

誤解しないでほしいのは、WSLそのものがコンテナになったわけではないという点です。この後説明しますが、既存のWSLで作成したUbuntuなどはこれまで通り使えます。

3. 「wsl」の新バージョンが「wslc」なのか?

自分が最初に少し混乱したのがここでした。

今回のバージョンで、新しい機能としてwslcというコマンドが出てきます。では、従来のwslコマンドがwslcに置き換わるのかというと、答えは違います

wslはこれまで通り存在します。そこに、コンテナ操作用のwslc追加される、という関係です。

  • wsl … UbuntuなどのWSLディストリビューションを起動・管理する
  • wslc … Linuxコンテナを起動・管理する

WSL containerには大きく2つの要素があり、1つはLinuxコンテナをビルド・実行・操作するためのCLIであるwslc.exe。もう1つはWindowsアプリからLinuxコンテナを扱うためのAPIだと説明されています。ちなみにcontainer.exeという別名(エイリアス)でもwslc.exeを呼び出せるようです。

イメージとしてはこんな感じです。

Windows
 ├─ wsl.exe
 │   └─ Ubuntu / Debian / AlmaLinux などを起動する
 │
 └─ wslc.exe(container.exeでも呼べる)
     └─ ubuntu:latest / nginx などのLinuxコンテナを起動する

😅正直、名前が似すぎていて最初は「バージョンアップ後の新名称なのかな?」と勘違いしていました。ですが、役割がまったく別のコマンドが増えたと捉えるのがよさそうです。

4. これはDockerなのか?

ここも誤解しやすいところです。

WSL containerは、Dockerそのものではありません。Docker Desktopでもありませんし、Docker Engineそのものという説明でもありませんでした。

ただし、使い勝手はかなりDockerに近いように思えます。たとえば、Nginxコンテナを動かす場合、Dockerならこう書きますが、

PS> docker run -d --rm -p 8080:80 --name web nginx

WSL containerを使用すると以下のようになります。

PS> wslc run -d --rm -p 8080:80 --name web nginx

見比べると、ほぼdockerwslcに置き換えただけにも見えます。

しかも、Public Previewの時点で以下の実行が可能となっています。

  • イメージ操作:build / pull / push / import / save / inspect / prune
  • コンテナ操作:run / exec / logs / stats
  • ネットワーク:ポート公開(port publishing)
  • ボリューム:VHDベースのvolume
  • GPU対応(CDIベース)

割と完成度が高くなっている印象です。

つまり、

「Dockerではないが、DockerっぽくLinuxコンテナを動かせるWSL標準の仕組み」

ってことですかね。

Dockerに慣れている人なら学習コストは低そうですし、これからコンテナに入門する人にとっても、Docker Desktopのインストールなしで試せる入口になりそうです。

⚠️後述しますがDocker Composeに相当する機能は現時点で確認できません。「Docker Desktopが不要」と考えるのはまだ早いというところでしょうか。

5. 検証環境

今回の検証環境は以下の通りです。メインPCではなく、GTX 1650を搭載した検証用PCを使いました。

項目 内容
PC CPU:第9世代Corei5 メモリ:16GB GPU:GTX1650搭載
OS Windows 11 HOME
WSLバージョン(更新前) 2.7.10.0
WSLバージョン(更新後) 2.9.3.0

今回の検証環境はあくまで「メイン環境を汚さないための検証用マシン」という位置づけです。

⚠️WSL本体をpre-release版に更新する必要があるため、普段の開発で使っているメインPCではなく、検証用のマシンで試すことを強くおすすめします

万が一に備えて、既存のWSL環境がある場合はバックアップも取っておきましょう😊 バージョンアップ前に以下を行なっておくとよいでしょう。

PS> wsl -l -v
PS> wsl --export Ubuntu D:\backup\Ubuntu-wsl-backup.tar

6. WSL containerを導入してみる

改めて実際に導入していきます。

6-1. WSLをpre-release版に更新する

まず、WSLをpre-release版に更新します。PowerShellで以下を実行します。

PS> wsl --update --pre-release
PS> wsl --shutdown

⚠️Microsoft Learnのquickstartにはwsl --updateとだけ書かれている箇所もありますが、previewを確実に取りに行くなら--pre-releaseを付けるのが確実です。

実行すると「Linux用Windowsサブシステムをバージョン2.9.3に更新しています」というメッセージが表示され、更新されました。

6-2. wslcが使えるか確認する

更新が終わったら、wslcコマンドが使えるようになっているか確認します。

PS> wslc version

……ところが、ここでいきなりハマりました😅

更新を実行したのと同じPowerShellでそのままwslc versionを叩いたところ

wslc : 用語 'wslc' は、コマンドレット、関数、スクリプト ファイル、
または操作可能なプログラムの名前として認識されません。

こんなエラーが出ました。

原因はPATH環境変数が既存のターミナルに反映されていないことです。ターミナルを一度完全に閉じて開き直すことで問題は解決します。

wslc.exeはWSLに同梱されているので、Docker Desktopのような別のエンジンをインストールする必要はありません。ここがこの仕組みの手軽なところです。

6-3. hello-worldを動かしてみる

コンテナの世界の定番、hello-worldを動かしてみます。

PS> wslc run --rm hello-world

ワンショットでUbuntuコンテナのコマンドを実行するのも試してみます。

PS> wslc run --rm -it ubuntu:latest bash -c "echo Hello world from WSL container!"

こちらも問題なく実行できています。

7. Nginxコンテナを動かしてみる

hello-worldだけだと味気ないので、もう少し実用寄りの例としてNginxを動かしてみます。このテストではバックグラウンドで起動して、ポート8080を公開します。

PS> wslc run -d --rm -p 8080:80 --name web nginx

起動したら、curlでアクセスしてみます。

PS> curl http://localhost:8080

動いているコンテナの一覧も確認してみます。

PS> wslc container list

コンテナの中に入って(正確にはコンテナ内でコマンドを実行して)、中身のOSも見てみます。

PS> wslc exec web cat /etc/os-release

確認が終わったら、コンテナを停止します。--rm付きで起動しているので、停止すればコンテナは削除されます。

PS> wslc container stop web

各ステップをまとめておくと、こんな感じでしょうか。

ステップ 実行結果
wslc run --rm hello-world Helloを含む成功メッセージが出る
ubuntu:latest ... echo ... Hello world from WSL container!が出る
curl http://localhost:8080 HTML本文が返ってくる
wslc container list webという名前の実行中コンテナが見える
wslc exec web cat /etc/os-release PRETTY_NAME=などLinuxのOS情報が出る

8. Containerfileからビルドしてみる

WSL containerは、イメージのビルドもできます。Dockerでいうdocker buildに相当する操作となります。

大きく異なっているのは、定義ファイルの名前がDockerfileではなくContainerfileである点です(Podmanなどでも使われている名前です)。

今回は最小構成として、Nginxに自作のHTMLを1枚載せただけのイメージをビルドしてみます。用意するファイルは2つになります。

myapp/
 ├─ Containerfile
 └─ index.html

Containerfileの中身は以下のようになっています。

FROM nginx:latest
COPY index.html /usr/share/nginx/html/index.html

index.htmlは動作確認できれば何でもよいので、こんな感じにしておきます。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>WSL container test</title>
</head>
<body>
  <h1>Hello from wslc build!</h1>
  <p>このページはwslcでビルドしたコンテナから配信されています。</p>
</body>
</html>

フォルダ作成、設定ファイルの作成後はmyappフォルダに移動し、ビルドと実行を試します。タグ名は-tオプションでつけることができます。

PS> cd myapp
PS> wslc build -t myapp .
PS> wslc image list
PS> wslc run -d --rm -p 8080:80 --name myweb myapp
PS> curl http://localhost:8080
PS> wslc container stop myweb

curlの結果に「Hello from wslc build!」が含まれていれば、自分でビルドしたイメージがコンテナとして動いていることが確認できます。

9. 既存のWSL環境はどうなるのか

ここで、今まで使っていたWSLのUbuntuなどがどうなるのか整理しておきます。

結論から言うと、基本的にはそのまま使えます

WSL containerは、既存のUbuntuなどを置き換えるものではありません。WSLに「Linuxコンテナ用の入口」が追加されたものです。

ただし、「何がどこで管理されるのか」は分けて考える必要があります。

種類 考え方
WSLディストリビューション Ubuntu、Debianなど 従来通りwslで使う
WSL内に入れた開発環境 Python、Node.js、aptで入れたツールなど 従来通り使う
WSL containerのイメージ ubuntu:latestnginxなど wslc側で管理する
Docker Desktopのイメージ Docker Desktopでpull/buildしたもの そのまま共有されるとは限らない

ポイントは、

「WSLのUbuntuと、wslcで扱うコンテナイメージは別物」という点です。

「UbuntuをWSLで動かす」と「ubuntu:latestコンテナをwslcで動かす」は、言葉は似ていても管理の場所が違うことになりそうです。

既存WSLの確認はこれまで通りwsl -l -v、WSL container側のイメージ確認はwslc image listと、入口が分かれています。

10. 現時点でできないこと

ここまで見るとかなり使えそうな印象ですが、Public Previewらしい制約もあります。GitHubのissueなどで報告されている内容を整理しておきます(自分の環境ではすべては未検証です)。

Docker Compose相当の機能がない

現時点で一番大きい制約はこれだと思います。docker-compose.ymlで複数サービスをまとめて立ち上げる、という使い方に相当する公式機能は確認できず、GitHubでもfeature requestとして扱われている段階とのことです。Compose中心で開発しているチームは、現時点ではDocker Desktop継続が安全です。

bind mountの互換性はDockerと同一ではない

Dockerで通っていた-vのパス指定がwslcでは通らない、というエラー報告があるいようです。

Windowsコンテナは扱えない

WSL containerはその名の通りLinuxコンテナ専用です。Windowsコンテナを扱いたい場合は従来通りの手段が必要です。

11. Docker Desktopとどう使い分けるか

ここまでを踏まえて、Docker Desktopとの比較をしてみます。

観点 WSL container(Public Preview) Docker Desktop
提供状態 Public Preview(GAは2026年秋目標) 正式版・成熟した製品
導入 WSLの更新だけで入る(同梱) 別アプリのインストールが必要
ライセンス WSLに同梱(追加コストなし) 大きい組織では有償契約が必要な場合あり
基本CLI wslc runなどDockerにかなり近い dockerコマンド
Compose 現時点で未対応(要望段階) 同梱されている
Kubernetes 公式ドキュメントでは確認できず 含まれている
Dev Containers pre-release版VS Code拡張で対応 成熟している
GPU 対応あり(CDIベース、preview機能) 対応あり
Windowsコンテナ 非対応(Linux専用) 条件付きで対応

使い分けの目安としてはいかのようになるでしょうか。

  • WSL containerが向いていそう … 個人開発でのLinuxコンテナ、軽めのWeb/API開発、ローカルAI/MLの実験、Docker Desktopのライセンスを避けたいケース
  • Docker Desktopを残したほうがよさそう … Compose中心の開発、安定したDev Containers運用、企業proxy/ミラー前提の環境、既存のDockerエコシステムへの依存が大きいチーム

現状としては、「試す価値は高い。ただしDocker Desktopを今すぐアンインストールする話ではない」というのが今回の実感です。

おわりに

WSL containerは、Docker Desktopをすぐに置き換えるものというより、Windows上のLinuxコンテナ実行環境が、もう一段Windows標準に近づいてきたという印象です。

  • wsl … WSLディストリビューション用(従来通り)
  • wslc … Linuxコンテナ用(今回追加)

これはDockerそのものではないものの、wslc runwslc buildのように、Dockerに慣れた人ならかなり近い感覚で触れることができそうです。

「WindowsでLinuxコンテナが直接動く時代が来そう。ただし、今すぐ本番導入するにはまだ様子見」といったところですね😅

参考リンク