Microsoft⁠⁠、WSL containersを一般提供 —⁠—CLIとAPIでWindowsからLinuxコンテナを操作

Microsoftは9月29日、Windows Subsystem for Linux(WSL)のコンテナ機能「WSL containers」の一般提供を開始した。Windows上でLinuxコンテナをビルド・実行・管理するCLIと、Windowsアプリにコンテナの実行機能を組み込むAPIを提供する。一般提供にあわせ、コンテナの再起動や状態確認などのコマンドを追加し、企業向けの管理・セキュリティ機能との連携も整えた。

WSLは、Windows上でLinux環境を利用するための仕組み。コンテナ機能は6月29日にパブリックプレビューが公開され、今回、一般提供へ移行した[1]。MicorosoftのCraig Loewen氏はXの投稿で、コンテナ機能がWSLの通常リリースに含まれるようになり、開発や本番環境での利用に向けた準備が整ったと説明している。

WSLの更新で利用可能⁠。Windowsアプリへの組み込みにも対応

WSL containersを利用するには、ターミナルでwsl --updateを実行するか、GitHubのリリースページから最新版を入手する。一般提供版はWSL 3.0.1として公開された。

CLIのwslc.exeを使って、Linuxコンテナをビルド、実行、デプロイできる。別名としてcontainer.exeも用意されており、同じコマンドを使える。

公式チュートリアルでは、Webサーバーのnginxを起動する例を紹介している。PowerShellでwslc run -d --rm -p 8080:80 --name web nginxを実行すると、コンテナがバックグラウンドで起動する。ブラウザーでhttp://localhost:8080にアクセスして動作を確認し、停止するときはwslc stop webを実行する。

PowerShellでwslc run --rm grycap/cowsay /usr/games/cowsay "Hello from wslc.exe on Windows!"を実行し、牛のアスキーアートを表示した例。--rmの指定により実行後のコンテナは自動削除され、取得したイメージはローカルに残る。
PowerShellでcowsayを実行した結果と、起動中のコンテナがないこと、取得済みのイメージ2件を示す画面

Windowsアプリにコンテナの実行機能を組み込むためのAPIは、NuGetパッケージMicrosoft.WSL.Containersを通じて提供される。コンテナイメージの取得、コンテナの実行や標準入出力の操作、ファイルのマウント、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(MDE)との連携がコンテナにも広がった。

端末管理サービスの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倍高速になったという。

ネットワークには「consomme」モードを採用している。Linux仮想マシンの通信を、利用者の権限で動くWindows側のプロセスが中継する仕組みで、VPNやファイアウォールとの互換性向上を図っている。

今後は、複数のコンテナをまとめて定義・起動するComposeへの対応に注力する。既存のcompose.yamlをそのまま利用できるよう開発を進めている。

おすすめ記事

記事・ニュース一覧