https://docs.docker.com/docker-for-windows/wsl/ の日本語訳。
Windows Subsystem for Linux (WSL) 2 は、 Microsoft によって構築された完全な Linux カーネルです。
エミュレーションなしで Linux コンテナーをネイティブに実行できるようにするため、アーキテクチャーに大きな変更が加えられています。
WSL 2 で Docker デスクトップを実行すると、ユーザーは Linux ワークスペースを活用でき、 Linux と Windows の両方のビルドスクリプトを維持する必要がなくなります。
さらに WSL 2 はファイルシステムの共有と起動時間を改善し、 Docker デスクトップユーザーがクールな新機能にアクセスできるようにします。
Docker Desktop は WSL 2 の動的メモリ割り当て機能を使用して、リソース消費を大幅に改善します。
つまり Docker デスクトップは必要な量の CPU とメモリリソースのみを使用し、 CPU とメモリを集中的に使用するコンテナーの構築などのタスクをより高速に実行できるようにします。
さらに WSL 2 では、コールドスタート後に Docker デーモンを起動するのに必要な時間が大幅に速くなりました。
以前のバージョンの Docker デスクトップのほぼ 1 分と比較して、 Docker デーモンの起動には 10 秒もかかりません。
前提条件
Docker Desktop WSL 2 バックエンドをインストールする前に、次の手順を完了する必要があります。
Windows 10 バージョン 2004 以降をインストールします。
Docker Desktop Edge リリースは、 Windows 10 バージョン 1903 以降もサポートしています。
Windows で WSL 2 機能を有効にします。
詳細な手順については Microsoft のドキュメントを参照してください。
Linux カーネル更新パッケージをダウンロードしてインストールします。
ダウンロード
Docker Desktop Stable 2.3.0.2 以降のリリースをダウンロードします。
インストール
Docker Desktop Stable 2.3.0.2 リリースをインストールする前に、 前提条件 セクションで説明されている手順を完了していることを確認してください。
通常のインストール手順に従って Docker デスクトップをインストールします。
サポートされているシステムを実行している場合、 Docker Desktop はインストール中に WSL 2 を有効にするように求めます。
画面に表示される情報を読み、 WSL 2 を有効にして続行します。
Windows の [スタート]
メニューから Docker デスクトップを起動します。
Docker
メニューから 設定
> 一般
を選択します。
[WSL 2 ベースのエンジンを使用する]
チェックボックスをオンにします。
WSL 2
をサポートするシステムに Docker デスクトップをインストールした場合、このオプションはデフォルトで有効になります。
[適用して再起動]
をクリックします。
ディストリビューションが WSL 2
モードで実行されることを確認します。
WSL は v1 モードと v2 モードの両方でディストリビューションを実行できます。
WSL モードを確認するには、次のコマンドを実行します。
wsl.exe -l -v
既存の Linux ディストリビューションを v2 にアップグレードするには、次のコマンドを実行します。
wsl.exe --set-version (distro name) 2
今後のインストールのデフォルトバージョンとして v2 を設定するには、次のコマンドを実行します。
wsl.exe --set-default-version 2
Docker デスクトップが再起動したら [設定]
> [リソース]
> [WSL 統合]
に移動します。
WSL 統合は、デフォルトの WSL ディストリビューションで有効になります。
デフォルトの WSL ディストリビューションを変更するには wsl --set-default <distro name>
を実行します。
たとえば Ubuntu をデフォルトの WSL ディストリビューションとして設定するには wsl --set-default ubuntu
を実行します。
オプションで WSL 2 を有効にする追加のディストリビューションを選択します。
[適用して再起動]
をクリックします。
Docker と WSL 2 で開発する
次のセクションでは Docker と WSL 2 を使用してアプリケーションの開発を開始する方法について説明します。
Docker と WSL 2 を使用して最高の開発エクスペリエンスを実現するには、デフォルトの Linux ディストリビューションにコードを置くことをお勧めします。
DockerDesktop で WSL 2 を有効にした後、 Linux ディストリビューション内のコードで作業を開始できます。
理想的には Windows で IDE を使用できます。
VSCode を使用している場合、このワークフローは非常に簡単です。
VSCode を開き、 Remote-WSL 拡張機能をインストールします。
この拡張機能により、 Linux ディストリビューションのリモートサーバーと Windows の IDE クライアントを操作できます。
これで VSCode によるリモート作業を開始できます。
上記を行うには、ターミナルを開いて次のように入力します。
wsl
code .
これにより、デフォルトの Linux ディストリビューションにリモートで接続された新しい VSCode が開きます。
これは、画面の下部隅で確認できます。
[スタート]
メニューにデフォルトの Linux
ディストリビューションの名前を入力して開き、コードを実行することもできます。
VSCode にいるときは VSCode のターミナルを使用してコードをプルし、 Windows マシンからネイティブで作業を開始できます。
ベストプラクティス
ファイルをバインドマウントするときにファイルシステムのパフォーマンスを最大限に引き出すには:
Windowsファイルシステムではなく、LinuxファイルシステムのLinuxコンテナーにバインドマウントされるソースコードとその他のデータを格納します。
( docker run -v <host-path>:<container-path>
を使用します)
Linux コンテナーは元のファイルが Linux ファイルシステムに保存されている場合のみ、ファイル変更イベント( inotify
イベント)を受け取ります。
ファイルが Windows ホストからではなく Linux ファイルシステムからバインドマウントされると、パフォーマンスが大幅に向上します。
したがって docker run -v /mnt/c/users:/users
( /mnt/c
は Windows からマウントされます)を避けてください。
代わりに Linux シェルから docker run -v ~/my-project:/sources <my-image>
のようなコマンドを使用します。
ここで ~
は Linux シェルによって $HOME
に展開されます。
docker-desktop-data VHDX のサイズが気になる場合、または変更する必要がある場合は、 Windows に組み込まれている WSL ツールをご覧ください。
CPU またはメモリの使用量に懸念がある場合は、 WSL 2 ユーティリティ VM に割り当てるメモリ、 CPU 、スワップサイズの制限を設定できます。
Docker デスクトップでの WSL 2 の使用との潜在的な競合を回避するには、 Docker デスクトップをインストールする前に、 Linux ディストリビューションから直接インストールされた以前のバージョンの Docker エンジンと CLI をアンインストールする必要があります。