ニュース

「WSL 3.0」がリリース、3カ月のテストを経て「WSL containers」が正式版に

「Docker」なしでLinuxコンテナーを構築・実行、「wslc compose」の開発にも着手

「WSL containers」が一般提供に

 米Microsoftは9月29日(現地時間)、「WSL 3.0」をリリースした。6月末からパブリックプレビューされていた「WSL containers」の一般提供が目玉だ。

 「Windows Subsystem for Linux」(WSL)は、Windows上でLinuxディストリビューションを動作させる仕組み。「コンテナー」(containers)は、特定のアプリを動かすために必要最小限の環境(アプリ本体と依存ライブラリ、設定ファイルなど)をパッケージングしたものだ。アプリとその実行環境をまとめたコンテナーイメージがあれば、通常は複雑なセットアップを必要とするLinuxアプリを手軽にWindows上で実行したりできる。

 今回一般提供が開始された「WSL containers」を利用すれば、コンテナーの実行エンジンとして「WSL」が利用可能。この手のソリューションとしては「Docker」などが有名だが、「WSL containers」があればそうしたサードパーティー製ツールをわざわざ導入しなくても、「WSL」をコンテナーエンジンとして利用できる。Windowsに統合されているので、サードパーティー製ツールの導入に伴う手間やライセンスコストを抑えられ、企業のIT部門もWindowsの管理機能を利用できるのが魅力だ。

 正式版「WSL containers」は「WSL 3.0.1」に含まれており、「wsl --update」コマンドで「WSL」を最新版にアップデートするか、「GitHub」から入手すると利用できるようになる。プレビュー期間中に必要だった「--pre-release」オプションはもう必要ない。

 コンテナー機能は、コマンドラインインターフェイス(CLI)とAPIの2通りで提供される。

  • WSL containers CLI(wslc.exe):WindowsからLinuxコンテナーのビルド・実行・デプロイを直接行える。今回、使い慣れたコマンドをそのまま入力できる組み込みの別名(エイリアス)「container.exe」も追加された
  • WSL containers API:ネイティブのWindowsアプリからLinuxコンテナーをプログラムで操作。「Microsoft.WSL.Containers」NuGetパッケージとして提供され、C/C++/C#に対応する。ファイル・ネットワークのマウントやGPUアクセス、標準入出力のやりとりも扱える

 パブリックプレビュー以降は、日々のコンテナー操作を簡単にすること、動作中の環境を把握しやすくすること、多数のコンテナーを扱えるようにすることに注力したという。正式版では以下のようなコマンド・機能が追加されている。

  • wslc container restart:動作中のコンテナーを再起動
  • wslc container cp:tarアーカイブ経由でコンテナーとファイルをやりとり
  • wslc system info:コンテナー環境の状態を一覧表示
  • wslc network connect、wslc network disconnect:コンテナーをネットワークに接続・切断
  • wslc events:コンテナーの動きをリアルタイムに流し込む
  • wslc network createで任意のネットワークドライバーオプションを指定可能に
  • コンテナーのヘルスチェック
  • wslc create、wslc run:「--stop-timeout」(-1指定で無期限)と「--mount」をサポート
  • 既定の「wslc」セッションで、コンテナーの保存先をドライブ単位で指定可能に

 企業向けの管理機能も拡充された。「Microsoft Intune」では「WSL containers」機能そのものの利用可否を制御する[Allow WSL containers access]と、コンテナーイメージの取得元レジストリを許可リスト(allowlist)で限定する[WSL containers registry allow list]の2つの設定が新たに用意される。「Microsoft Defender for Endpoint」(MDE)の「WSL」向けプラグインもコンテナーに対応し、コンテナー内のプロセス・ファイル・ネットワークの動きをWindowsホスト側の動きと結び付けて追跡できるようになった。セキュリティ部門が別建ての運用を用意しなくても、不審な挙動を調査できる。

 サードパーティーやコミュニティによる対応も進んでいる。「Visual Studio Code」の「Dev Containers」は「wslc」を既定のドライバーとして指定できるようになった。コンテナー管理拡張機能「Container Tools」も対応済み。「Aspire」でも「WSL containers」をコンテナーランタイムとして扱えるようになったほか、有志による管理ツール「Lazywslc」「WSL Container Desktop」などが開発されている。

 今後は、要望がもっとも多いという「wslc compose」の実装に注力するという。

 また、「WSL」そのものの基盤強化にも引き続き取り組むとのこと。「WSL containers」ではすでに以下が有効化されており、これらは「WSL」のディストリビューションや「WSL」上に構築された他のコンテナー技術にも恩恵をもたらすとしている。

  • virtiofs:Windows側のパスをコンテナーへマウントする際に用いる高性能ファイルシステム。従来の「plan9」に比べて約2倍高速で、OSをまたぐファイルアクセスというボトルネックを緩和する
  • consomme:Linux仮想マシンの通信をユーザー権限のWindowsプロセス経由で流す新しいネットワークモード。通常のWindowsアプリからの通信として扱われるため、VPNやファイアウォールとの相性がよい