Microsoftは9月29日、Windows Subsystem for Linux
WSLは、Windows上でLinux環境を利用するための仕組み。コンテナ機能は6月29日にパブリックプレビューが公開され、今回、一般提供へ移行した[1]。MicorosoftのCraig Loewen氏はXの投稿で、コンテナ機能がWSLの通常リリースに含まれるようになり、開発や本番環境での利用に向けた準備が整ったと説明している。
WSLの更新で利用可能。Windowsアプリへの組み込みにも対応
WSL containersを利用するには、ターミナルでwsl --updateを実行するか、GitHubのリリースページから最新版を入手する。一般提供版はWSL 3.
CLIのwslc.を使って、Linuxコンテナをビルド、実行、デプロイできる。別名としてcontainer.も用意されており、同じコマンドを使える。
公式チュートリアルでは、Webサーバーのnginxを起動する例を紹介している。PowerShellでwslc run -d --rm -p 8080:80 --name web nginxを実行すると、コンテナがバックグラウンドで起動する。ブラウザーでhttp://にアクセスして動作を確認し、停止するときはwslc stop webを実行する。
wslc run --rm grycap/cowsay /usr/games/cowsay "Hello from wslc.exe on Windows!"を実行し、牛のアスキーアートを表示した例。--rmの指定により実行後のコンテナは自動削除され、取得したイメージはローカルに残る。
Windowsアプリにコンテナの実行機能を組み込むためのAPIは、NuGetパッケージMicrosoft.を通じて提供される。コンテナイメージの取得、コンテナの実行や標準入出力の操作、ファイルのマウント、GPUへのアクセスなどに対応する。ローカルでのAI処理や、クラウド向けにコンテナ化したアプリケーションを手元のPCで動かす用途を想定している。
再起動や状態確認、ヘルスチェックなどを追加
パブリックプレビュー以降に追加された主なコマンドは次のとおり。
wslc container restart:コンテナを再起動するwslc container cp:tarアーカイブを介してコンテナの内部と外部の間でファイルをコピーするwslc system info:コンテナ環境の状態を確認するwslc network connect/wslc network disconnect:コンテナをネットワークに接続する/ネットワークから切断する wslc events:コンテナの動作に関するイベントをリアルタイムで取得する
コンテナの稼働状態を調べるヘルスチェックにも対応した。wslc createとwslc runでは、マウントを指定する--mountや、停止時の待機時間を指定する--stop-timeoutを利用できる。既定のセッションでは、コンテナ用データの保存先を変更し、使用するドライブを選べるようになった。
Intuneで利用を制御し、Defenderで動作を把握
企業向けには、Microsoft IntuneとMicrosoft Defender for Endpoint
端末管理サービスのIntuneでは、管理者がWSL containersの利用を許可・
MDEでは、既存のWSL向けプラグインを拡張し、コンテナ内のプロセスの実行、ファイル操作、ネットワーク通信を把握できるようにした。セキュリティ担当者は、これらの情報をホスト側のWindowsと関連付けて、不審な動作を調査できる。
VS CodeやAspireなどとの連携も進む
VS CodeのDev Containersでは、wslcを使ってWSL containers上に開発環境を構築できる。また、VS Code内でコンテナを管理するContainer Tools拡張機能もwslcに対応した。複数のサービスからなるアプリケーションの開発を支援するAspireでは、WSL containersをコンテナランタイムとして利用できる。
Microsoftはこのほか、ターミナル上でコンテナを管理するLazywslcや、WinUI 3で作られた管理アプリWSL Container Desktopなど、コミュニティによるツールも紹介している。
ファイルアクセスとネットワークを改善。Compose対応は今後
WSL containersでは、WindowsとLinux環境の間でファイルを共有する仕組みにvirtiofsを採用している。Microsoftのアーキテクチャ解説によると、Linux環境からWindows上のファイルへのアクセスが、Plan 9方式と比べて最大2倍高速になったという。
ネットワークには
今後は、複数のコンテナをまとめて定義・compose.をそのまま利用できるよう開発を進めている。