目的
WSLでWebアプリ(フロントエンド+バックエンド)のステージング環境を作ろうと思っていろいろ調べたところ、環境を作るという視点でまとめられた記事が見当たらなかったので自分で作ることにした。
ある程度やり方覚えても、ちょうどコマンドとか忘れたころに作業発生するから自分でまとめるのがいい。
やりたいこと
- スナップショットを取る(任意の時点の環境のバックアップ・再構築)
- distroに名前を付ける
- 同じdistroのイメージを複数起動する
例
PS C:\Users\Admin> wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04-a Stopped 2
Ubuntu-22.04-b Stopped 2
Ubuntu-22.04-c Stopped 3
前提 (環境に合わせて適宜読み替える)
- ベースとなるdistroはUbuntu-22.04を使う
- 起動中のdistroは
Z:\wsl\distro
に保存する - スナップショットは
Z:\wsl\snapshot
に保存する - distro = ディストリビューション
環境
- Windows 10 Pro 22H2
- Powershell
手順
# インストールできるdistroの一覧表示 distroが決まっているならskip 今回はUbuntu-22.04を使用する
# wsl -l -o
# distroのインストール
wsl --install -d Ubuntu-22.04 # 上記で表示された一覧のNAME列の文字列を入力
# -> wsl -l -v の一覧でUbuntu-22.04が追加される
# distroの停止
wsl -t Ubuntu-22.04
# -> wsl -l -v の一覧でUbuntu-22.04のSTATEがRunning > Stoppedに変わる
# スナップショットの作成
wsl --export Ubuntu-22.04 Z:\snapshot\Ubuntu-22.04-base.tar
# -> Z:\snapshot\にUbuntu-22.04-base.tarが作成される。
# distroの削除
wsl --unregister Ubuntu-22.04
# -> wsl -l -v の一覧からUbuntu-22.04が消える
# distroのimport & 名前付け
wsl --import Ubuntu-22.04-a Z:\wsl\distro Z:\wsl\snapshot\Ubuntu-22.04-base.tar
# -> Z:\wsl\distroにext4.vhdxが作成される
# distroの起動
wsl -d Ubuntu-22.04-a
# -> wsl -l -v の一覧でUbuntu-22.04のSTATEがStopped > Running に変わる
# おまけ distroのデフォルト設定
wsl -s Ubuntu-22.04-a
# -> wsl -l -v の一覧でUbuntu-22.04-aの先頭に*がつく
※wsl -l -o
で表示される一覧からdistroをインストールする場合、distroに名前を付けることができず、また同じdistroを複数インストールすることもできない。そのため、インストールしたdistroのスナップショットを取って、それを名前を付けてインポートすることで同じUbuntu-22.04のイメージを複数起動できるようにしている。