WSL 2 で Docker Desktop をテストする方法

最近、Windows 用の Docker Desktop の新しい Edge バージョン 2.2.3.0 をリリースしました。 これは、WSL 2を正式にサポートする次の安定バージョンのリリース候補と見なすことができます。Windows 10バージョン2004を視野に入れて、Windows 10でLinuxコンテナを実行する最高のエクスペリエンスを提供するための最終仕上げをDockerデスクトップの次のバージョンにします。

大きな利点の1つは、Windows 10の次のアップデートで、 Windows 10 HomeでのDockerデスクトップの実行もサポートされることです。 過去数か月間、マイクロソフトと緊密に協力して、Docker Desktop と WSL 2 を連携させました。

このブログ投稿では、CI パイプラインで自動テストを実行するために、新しい WSL 2 対応のテスト コンピューターを設定する方法について、舞台裏を見ていきます。

それはラップトップから始まりました

すべての自動化はどういうわけか手動の手順から始まり、そこから進化してより良く、より自動化されることを覚えておいてください。 このプロジェクトの開始時に、KubeCon 2019でWSL 2の初期バージョンを搭載したラップトップが与えられました。

デスクトップ WSL 2 1

その1台のラップトップで、開発チームはその新機能を手に入れ、それをDockerデスクトップに統合することができます。 しかしもちろん、これはチーム全体にとって実際には拡張できず、自動テストも必要でした。

Docker デスクトップのテストマトリックス

Docker デスクトップ チームでは、異なるオペレーティング システムのバージョンがインストールされている複数の Windows および Mac マシンでいくつかのテスト スイートを実行します。 各コード変更は、選択したコンピューターでのテストのマトリックスを使用してテストされます。

デスクトップ WSL 2 2

私たちの課題の 1 つは、WSL 2 を有効にしてこのマトリックスに Windows マシンを追加することでした。 その時点で、Windows Insiderプログラムは最初のリリースを出荷し始め、新しいテストマシンを最新の状態に保つためのプロセスの自動化を開始することができました。

オンデマンドテストランナー

Docker デスクトップの起動時間は、WSL 2 バックエンドを使用するとはるかに高速になります。 これにより、仮想マシンでエンドツーエンドのテストを実行するオプションが提供されました。 CI インフラストラクチャを強化して、Azure で Windows 10 Insider マシンをオンデマンドで起動できるようにしました。 これにより、テスト マシンをプール内の WSL 2 の動作バージョンに維持し、最新の Insider ビルドを試す柔軟性が向上しました。

内部CIダッシュボードには、すべてのテストマシンと、それらで実行されているジョブが数週間ごとに変更されて表示されます。 私たちは常に Insider リリースから次のリリースへと移行しました。 現在、最終的なスローリングビルド19041.xに集中しています。 しかし、今後のWindowsビルドからのフィードバックを得るために、次のファストリングマシンも継続しています。

デスクトップ WSL 2 3

テスト コンピューターを構築するための自動パイプライン

WSL 2 テスト マシンのスピンアップに使用する Azure VM イメージは、別の CI パイプラインを使用して作成されます。 Packer を使用して ISO ファイルから VM イメージを作成し、プロビジョニング スクリプトを実行して、CI ランナーとして実行するために必要なすべてのものを準備します。 VM イメージをビルドしてアップロードする方法のパイプラインには、ビルド ステップ以上のものも含まれています。 まず、Packer テンプレートのソース コードと PowerShell および Unix シェル スクリプトをチェックして、コードの変更によって何かが壊れた場合にすぐに失敗するようにします。 パッカーのビルド自体には最も時間がかかりますが、VM で Windows Update を実行して最新の OS バージョンを取得します。 ビルド後、必要なソフトウェアが正しくインストールされているかどうかを確認するために、InSpec を使用した検証手順を追加しました。

デスクトップ WSL 2 4

この Packer パイプラインの出力は、他の CI パイプラインで新しいオンデマンド ランナーを起動するために使用できる Azure VM イメージです。 通常、カナリア環境でいくつかのテストを実行して、VM イメージが実際に起動して CI インフラストラクチャにアタッチされるかどうかを確認します。 すべて問題がなければ、エンドツーエンドのテスト用に Docker デスクトップ CI の構成を更新します。

新しい課題:ウィンドウズ10ホーム

Windows 10 Proマシンの自動化により、Windows 10 Homeを非常に簡単に追加できました。 もちろん、Windows 10 Homeがリモートデスクトップのサポートを提供しないなど、いくつかの課題がありました。 問題を調査する場合にクラウドランナーに接続できるようにVNCサーバーを追加しました。

結論

過去 12 か月間、Docker Desktop チームは、WSL 2 のサポートを Docker Desktop にもたらすだけでなく、Windows 10 Home ユーザーが自分のマシンで Docker を簡単に実行できるように懸命に取り組みました。 Windows 10バージョン2004の公式リリースを本当に楽しみにしており、フィードバックをお待ちしています。