WSL2で1つのディストリビューションから複数の環境を作る
WSL2を使うようになって、Vagrantみたいに1つのBoxから複数の異なるVMを構築できるようにしたかった 理由は2つある
1. 1つVMを作って、ある程度環境構築が完了した時点のVMをスナップショットとして保存しておき、いつでもスナップショット時点のVMから再開できるようにしたいから
開発用の環境にはいろんなツールをインストールしまくるので、VMを破棄して作り直すときに毎回インストールしなおすのは時間がかかる
ゴールデンイメージとしてVMを作り置きしておけば、VMの作り直しにかかる時間が削減できる
2. 環境構築し直したくなった時に、今開発に使ってる環境を残しつつ、まっさらな環境を別で立ち上げて並列に環境構築をやりたい
ローカルの開発環境は頻繁に更新するので、ずっと使ってると環境が汚くなる
ずっと使ってると環境をリフレッシュしたくなる
つまり環境を最初から作り直す
環境構築スクリプトで自動化してあっても時間はかかるし、スクリプトがコケる可能性もある
よって、普段使いの環境は残しておいて、新規に環境を立ち上げてそっちで環境構築スクリプトを走らせて、構築が終わった環境で動作確認をして問題なければ新しい環境に移行すればいい
問題があったら環境を捨てて立ち上げ直せばいい
やり直しになっても、今までの開発環境は今まで通り使えるので、気軽に開発環境をリフレッシュできるようになる
wslコマンドを使えばできそう
wsl -h
現在のディストリビューションを確認
code:ps1
PS C:\Users\jiro4989\workspace\dotfiles\script> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
docker-desktop Running 2
docker-desktop-data Running 2
Ubuntu-20.04-gui Stopped 2
インスタンス作成元の tar ファイルを確認
これは普通に僕のPC固有のファイルパスです
code:ps1
PS C:\Users\jiro4989\workspace\dotfiles\script> ls D:\backup\wsl\Ubuntu-20.04.tar
ディレクトリ: D:\backup\wsl
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020/12/24 2:39 1042606080 Ubuntu-20.04.tar
この tar ファイルは--exportして作ったもの
別名でインスタンスを作る
wsl --import 好きな名前 インストール先ディストリ tarファイルのパス
code:ps1
PS C:\Users\jiro4989\workspace\dotfiles\script> wsl --import tmp_ubuntu c:\Users\jiro4989\wsl\test D:\backup\wsl\Ubuntu-20.04.tar
PS C:\Users\jiro4989\workspace\dotfiles\script> ls C:\Users\jiro4989\wsl\test\
ディレクトリ: C:\Users\jiro4989\wsl\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/11/22 12:22 1206910976 ext4.vhdx
PS C:\Users\jiro4989\workspace\dotfiles\script> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
tmp_ubuntu Stopped 2
docker-desktop Running 2
docker-desktop-data Running 2
Ubuntu-20.04-gui Stopped 2
せっかく立ち上げたので入ってみる
code:ps1
wsl -d tmp_ubuntu
デフォルトでは root ユーザとして入る
jiro4989ユーザとして入ってみる
code:ps1
wsl -d tmp_ubuntu -u jiro4989
動作確認ができたのでテストで立ち上げたインスタンスを破棄する
code:ps1
wsl --unregister tmp_ubuntu
code:ps1
PS C:\Users\jiro4989\workspace\dotfiles\script> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
docker-desktop Running 2
docker-desktop-data Running 2
Ubuntu-20.04-gui Stopped 2
消えた
C:\Users\jiro4989\wsl\test\ に存在したルートファイルシステムも削除されていた