Windows よりも Linux が豊富: El Reg が Docker Desktop for WSL 2 プレビューを試してみる

Table of Contents

Windows よりも Linux が豊富: El Reg が Docker Desktop for WSL 2 プレビューを試してみる

コンテナの天才 Docker が、Docker Desktop for Windows Subsystem for Linux 2 のプレビューをリリースしました。

このDocker Desktop 2のプレビューは、MicrosoftがWindows Subsystem for Linuxを、WSLの初期バージョンのようにシステムコールをリダイレクトするのではなく、独自のLinuxカーネルを備えた完全な仮想マシン(VM)にするという取り組みに基づいています。つまり、Dockerデーモンは、独立したHyper-V VMではなくWSL内で実行できるということです。

既存のDocker for Windowsは2GBのRAMを搭載したVMを作成します。WSL2は動的メモリとCPUを使用するため、リソース使用の面でより効率的かつ柔軟です。

WSL 2 を使用した Windows 上の Docker

WSL 2 を使用した Windows 上の Docker

WSL 2 向け Docker Desktop の現在のテクニカルプレビューには、いくつか問題点があります。まず、Windows 10 の最新の「Insider」ビルド(少なくとも 18932)が必要です。WSL 2 をサポートする以前のビルドは存在しますが、新しい Docker はサポートされていません。次に、サポートされている Linux ディストリビューションは Ubuntu 18.04 のみです。もちろん、WSL 2 モードで実行されていることを確認する必要があります。必要に応じて変換できます。

docker context コマンドは、どの docker デーモンが使用されるかを決定します。

docker context コマンドは、どの docker デーモンが使用されるかを決定します。

インストールが完了すると、Docker Desktop を WSL 2 モードと従来の VM モードの間で切り替えることができます。Docker Desktop の右クリックメニューにある「WSL 2 Tech Preview」オプションを使用すると、WSL 2 上の Docker デーモンの設定、起動、停止が行えます。起動後は、docker context コマンドを使用して 2 つのモードを切り替えることができます。例:

dockerコンテキストでwslを使用する

しかし、もう一つ厄介な問題があります。それは、docker-composeコマンドがまだこのコンテキストを理解していないことです。つまり、WSL用に設定されているはずの古いDocker VMでも、Dockerコンテナがまだ実行されている可能性があります。両方が動作していると、混乱やポートの競合が発生する可能性が高くなります。

DockerエンジニアのSimon Ferquel氏が提案する解決策は、DOCKER_HOST環境変数を使った回避策を使うか、WSL内からdocker-composeを使うことです。後者の解決策は、Visual Studio Codeリモート処理でDockerを使用する場合、エディター内でWSLのターミナルを開くことができるため簡単です。また、WSL 2の高性能なバインドマウント機能を利用して、Windows側のソースファイルにアクセスしたり、Linux側にソースファイルを保存したりすることも可能です。

新しいプレビューでは、DockerデーモンはオプションでWSL上で実行されます。

新しいプレビューでは、DockerデーモンはオプションでWSL上で実行されます。

ここで疑問が生じます。WSL 2 は、ローカルまたはリモートで実行される Linux VM を使用するだけの場合と比べて、どのような価値をもたらすのでしょうか。主な理由は、Visual Studio Code などの Windows エディタを使いながら Linux ツールチェーン全体を利用できること、そしてマシンを切り替えることなく Microsoft Office や Adob​​e Creative Suite アプリケーションなどの Windows アプリケーションにアクセスできるようになることです。

WSL 2では、このシナリオがほぼシームレスになります。WindowsでもWSL 2でもDockerツールを使用でき、どちらも同じDockerデーモンにアクセスできます。Ferquel氏はまた、VPN接続、ホストとDockerを実行するWSL間の信頼された証明機関の同期、Kubernetesのサポートなど、今後予定されている機能についても言及しています。

Docker Desktop for Windows は Windows コンテナへの切り替え機能も保持していますが、これは主にレガシーアプリケーションを対象としています。Microsoft が .NET Core や SQL Server で Linux をサポートしようとする取り組みは、Windows コンテナの必要性を低下させるという副作用をもたらしています。

現在の技術プレビューは勇敢な人向けですが、これが完了すれば、WSL 2、Docker、Visual Studio Code リモート処理の組み合わせにより、Windows 10 をコンテナー指向開発のための優れたソリューションにするという Microsoft の目標の達成に近づきます。

とはいえ、概念的には、コードのビルドと実行が Windows ではなく Linux 上で行われるようにすることが目的です。これは、Microsoft が採用した奇妙ではありますが、必要な道です。®

Discover More