VS Codeのエージェントモードを拡張するには、を試してください!

WSL 2 で Docker を使用する

2020 年 3 月 2 日 マット・ヘルナンデス著、@fiveisprime

昨年 6 月、Docker チームは Windows Subsystem for Linux (WSL) で Docker を実行することに投資すると発表しました。これはすべて、軽量の仮想マシン (VM) 内で実行されるように WSL のアーキテクチャが最近変更されたことで可能になりました。このことについては、以前の WSL 2 に関するブログ記事で説明しました。この発表以来、Docker チームは WSL 2 での実行をサポートする Docker のテクニカルプレビューをリリースしました。

この記事では、Docker Desktop テクニカルプレビューの仕組みと、Docker 拡張機能をテクニカルプレビューで使用する方法について説明します。

仕組み

この新しい Docker アーキテクチャは、ホストマシンで実行されている Docker CLI が、リモートの WSL VM 上で実行されている Docker Integration Package 内でコマンドを実行するという点で、Visual Studio Code のWSL リモート開発サポートと非常によく似ています。

Docker in WSL 2

画像提供: Docker Engineering

DockerD は WSL 内で直接実行されるため、Hyper-V VM は不要で、すべての Linux コンテナーは Windows 上の Linux ユーザースペース内で実行され、パフォーマンスと互換性が向上します。

セットアップ

まず、いくつかの前提条件

  • WSL 2 のために Windows 10 Insider Preview ビルド 18975 (Slow) 以降をインストールします。
  • Microsoft Store から Ubuntu をインストールします。
  • このガイドに従って WSL 2 を有効にします。
  • VS Code 用のWSL 拡張機能をインストールします。
  • Docker WSL 2 テクニカルプレビューをインストールします。

インストール後、Docker は WSL がインストールされていることを認識し、WSL 統合を有効にするよう促します。このチュートリアルでは、WSL 統合を有効にする必要があります。

Docker Desktop WSL integration dialog

このオプションを使用すると、Linux ディストロ内から直接 Docker CLI を介して Docker Desktop にアクセスできるようになります。

複数の Linux ディストロがある場合は、Docker 設定で、適切なディストロのみに WSL 統合が有効になっていることを確認してください。

Docker settings dialog

これが設定されると、すべてのコマンドは Linux コンテキストで実行されます。これには PowerShell から実行される Docker コマンドも含まれるため、`docker run mongo…` のようなコマンドを実行すると、WSL VM 内で Linux コンテナーが起動します。

docker run mongo command

WSL で `docker ps` コマンドを実行すると、期待どおりにコンテナーが表示されます。コンテナー ID が一致することに注意してください。

docker ps command in WSL

VS Code の使用

このセットアップが完了し実行されている状態で、VS Code のDocker 拡張機能をインストールして、コンテナーにアクセスできます。すでに WSL 2 とWSL 拡張機能を使用している場合、これにより、コンテナーが必要なときにコンテキストを切り替えることなく、Docker を WSL ワークフローに統合できます。Docker CLI のコンテキストは WSL 内の DockerD を使用するように設定されているため、VS Code を WSL 拡張機能を使用して開いたかどうかに関係なく、この拡張機能はコンテナーで動作します。

下のスクリーンショットで、私が WSL に接続して作業しており、好みの環境 (Ubuntu の zsh) から変更することなくコンテナーを構築/実行していることに注目してください。

VS Code working with containers in WSL

テーマ: Noctis Sereno

個人的には、この構成を使用することでコンテナーの実行時間が大幅に改善され、通常の開発ワークフローの各部分が同じままであることに気づきました。また、特定の環境をテストするために、マシンに直接セットアップすることなく、WSL 内でDev Containers 拡張機能も使用しています。

フィードバックをお寄せください

これはプレリリースソフトウェアであり、Windows Insider Slow リングは非常に安定していますが、いくつかの問題に遭遇する可能性があることに注意してください。期待どおりに動作しないものを見つけた場合は、Windows のフィードバックツールから問題を報告してください。Docker に関連する直接の問題やフィードバックは、Docker for Windows リポジトリに記録できます。

ハッピーコーディング!

マット・ヘルナンデス、VS Code プログラムマネージャー @fiveisprime