この記事の内容
なんだか題名が長くてラノベみたいですが。
この記事では、構築済みのWSL2環境に、あたかもVMを作成するようにUbuntuを追加でインストールすることができます。
忙しい人用の結論 3手順
1. イメージダウンロード
2. ディストリビューション イメージインポート
wsl --import Ubuntu2 '~\AppData\Local\Ubuntu2' 'ubuntu-20.04-server-cloudimg-amd64-wsl.rootfs.tar.gz'
3. 実行
wsl -d Ubuntu2
まえおき
2020年5月 ついにWindows 10 May 2020 Update が公開され、WSL2が正式にリリースされました。
WSL2は簡単にインストールできるし、既存のWSL1でインストールしたLinuxをWSL2に変換することも容易です。また、記事もたくさんあります。
PS C:\> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 1
docker-desktop-data Running 2
docker-desktop Running 2
PS C:\> wsl --set-version Ubuntu 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
PS C:\> wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
docker-desktop-data Stopped 2
docker-desktop Stopped 2
しかし、MicrosoftのWSLのドキュメントを読んでも、ディストリビューション(同一でもよい)をインストールする方法の記載がありません。
ググると、WSLコマンドでExportしたのち、Importする方法など情報もありますが、クリーンな環境を自由に作るという目的では、今一つすっきりしません。
※試していませんが、すでに使用中の環境ですと、パッケージをインストール済みの環境がクローンされるでしょう。
そこで、試してうまくいった方法を紹介します。なお、元の情報は以下になります。
前提
WSL2インストール済みで動作確認が完了していること。
1. VMイメージダウンロード
WSL2上でLinuxを動作させるためには、WSL2用のパッチが適用されたカーネルが必要となります。
通常、Linuxはアプリなどを含んだ一つのパッケージとして、配布されています。一般的に左記のパッケージをディストリビューションと呼びます。ディストリビューションは作る会社や、組織によって、ちょっとずつ特色があります。
有名なものがUbuntuや、CentOS、Redhatなどです。
ありがたいことにUbuntuは公式でWSL用のイメージを作成してくれています。
以下からイメージをダウンロードしましょう。
※特定のバージョンが良ければ、上記フォルダの近辺をあさってください。
2. ディストリビューション イメージインポート
オプションは3つで、名前、ディスクイメージを格納するパス、先ほどダウンロードしたイメージのフルパスです。
詳細は他の情報に譲りますが、WSL2ではWSL1と違ってHyper-vのHDDイメージを作成し、それを利用します。
PS C:\> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop-data Running 2
docker-desktop Running 2
PS C:\> wsl --import Ubuntu2 '~\AppData\Local\Ubuntu2' 'D:\ubuntu-20.04-server-cloudimg-amd64-wsl.rootfs.tar.gz'
PS C:\> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
Ubuntu2 Stopped 2
docker-desktop-data Running 2
docker-desktop Running 2
3. 実行
上記で見たようにWSLコマンドで確認した結果StatusはStoppedになっています。
また、wslコマンドを実行すると、最初にインストールしていたディストリビューションが起動します。
で、新たに作成したUbuntu2を起動するにはどうするかというと、以下で実行できます
PS C:\> wsl -d Ubuntu2
root@DESKTOP-UIMJQCQ:/mnt/c#
※このコマンドオプション、わかりにくいですよね!
そのた
あとは、WSLと同じ操作になるため、exitするなり、Ctrl+Dを実行するなりでPowerShellへもどります。
このとき、しばらくはWSLが実行されているように見えますが、自動的に終了するようです。
monta@DESKTOP-UIMJQCQ:/mnt/c$ logout
PS C:\> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
Ubuntu2 Running 2
docker-desktop-data Running 2
docker-desktop Running 2
新たにインストールしたUbuntu2をWSLコマンドだけで起動するためにはデフォルトを変更すればよいでしょう。
PS C:\> wsl --set-default Ubuntu2
PS C:\> wsl -l -v
NAME STATE VERSION
* Ubuntu2 Running 2
Ubuntu Running 2
docker-desktop-data Running 2
docker-desktop Running 2
バカバカWSLを増やさずともDockerを実行するのが良いと思います。
が、同時にクリーンな環境を欲しいなどの要件で、今回の方法を実現したい人は多いと思いまとめさせていただきました。
さて、Docker Desktopを継続するか、アンインストールするか考えよう。