📌
WSL上でAmazon Linux 2023を動かす方法
はじめに
現時点ではMicrosoft storeからAmazon Linux 2023をインストールすることはできません。
Amazon Linux 2023を使って何かを検証したいときにEC2インスタンスを立てるのも面倒なので、WSL上でAmazon Linux 2023を動かす方法を紹介します。
前提条件
- WSL2がインストールされていること
- Docker Desktopがインストールされていること
Amazon Linux 2023のイメージをPullする
まずWSLでDockerを有効化し、Amazon Linux 2023最新のイメージをPullします。
sudo service docker start
sudo docker pull amazonlinux
---
Using default tag: latest
latest: Pulling from library/amazonlinux
a802d1401e24: Pull complete
Digest: sha256:28004508959f548dd98278f746c577a41b8340dc295e51d309e721e4e217bb85
Status: Downloaded newer image for amazonlinux:latest
docker.io/library/amazonlinux:latest
Amazon Linux 2023のイメージを起動する
次に、Amazon Linux 2023のイメージを起動します。
sudo docker run -it amazonlinux uname -a
---
Linux fec0d6728c41 5.15.90.2-microsoft-standard-WSL2 #1 SMP Fri Jun 2 00:45:15 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Container IDを確認する
続いて、起動したAmazon Linux 2023のイメージのContainer IDを確認します。
❯ sudo docker container ls -a | grep amazonlinux
262e493a4f8f amazonlinux "uname -a" 4 seconds ago Exited (0) 3 seconds ago modest_wilbur
Container をtarファイルにエクスポートする
Container IDを確認したら、Containerをtarファイルにエクスポートします。
sudo docker export 262e493a4f8f > ~/amazonlinux.tar
エクスポート完了したら、Windowsのファイルエクスプローラーで\\wsl.localhost\<WSL名>\home\<ユーザー名>
を開き、外にコピーもしくは移動します。
WSL名は、wsl -l
で確認できます。
Amazon Linux 2023のイメージをWSLにインポートする
最後に、PowerShellを起動し、WSLにAmazon Linux 2023のイメージをインポートします。
# wsl --import AmazonLinux2023 <AmazonLinux2023の置き場所> <tarファイルの置き場所>
wsl --import AmazonLinux2023 'E:\AmazonLinux2023' 'D:\amazonlinux.tar'
確認
PS C:\Users\xx> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
AmazonLinux2023 Stopped 2 <- 追加されていることを確認
docker-desktop-data Running 2
Ubuntu-22.04 Running 2
docker-desktop Running 2
まとめ
WSL上でAmazon Linux 2023を動かす方法を紹介しました。
現時点で足りないところとしてはデフォルトrootユーザーで起動され、wsl コマンドで設定できないことで、
使えるまでには他に初期設定が必要になります。
Discussion
本手順を参考に以下の WSL バージョン(2024/02/16 時点の最新 WSL)で動かすと
以下のようなエラーが発生します。
また、このエラーが出た状態だと /mnt/c のマウントがうまく行っておらず、WSL から Windows ファイルを参照できません。
本問題は初期状態の amazonlinux コンテナが mount コマンドを備えていないことに起因して発生するエラーのようです。
以下のような Dockerfile を用意して予め mount コマンドをインストールした状態のコンテナをエクスポートして使うことで解決できます。
以下、ビルド&起動コマンドです。
上記 Dockerfile は本問題を解決する必要最小限のものですが「使えるまでには他に初期設定が必要になります。」の設定を書く場所として使うこともできます。