見出し画像

wsl2にRockyLinux9をインストールしてpodman環境構築

つい最近まで知りませんでしたが、wsl2環境は任意のディストリビューションをインポートして使い分けられるそうです。なんでこんな大事なことをこれまで調べてこなかったのか。。

ということで、今のwsl2環境にrockylinux9をインストールしてpodmanでいろいろ遊べる環境を作ります。

まず現環境は以下です。

windows 10
wsl2
 Ubuntu 20.04.6 LTS

作業後、新環境は以下になりました

windows 10
wsl2
 Ubuntu 20.04.6 LTS
 Rockey linux 9.1  ★追加!


以下のページを参考にrockeylinux9のイメージファイルを
https://dl.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-Container-Base.latest.x86_64.tar.xz
からダウンロードします。

ダウンロードしたtar.xzファイルは7zip等を利用してtarファイルに解凍します。このtarファイルはダウンロードディレクトリに置いておきます。

次に、powershellを起動してwindowsのファイルエクスプローラー上でrockylinux9のファイルシステムを配置するディレクトリを作成します。

mkdir C:\Users\ユーザ名\AppData\RockyLinux9

ここまでくれば準備完了。power shellから以下のコマンドを実行してrockylinux9をwsl2にインポートします。

wsl --import rockylinux9  C:\Users\ユーザ名\AppData\RockyLinux9 C:\Users\ユーザ名\Downloads\Rocky-9-Container-Base.latest.x86_64.tar --version 2

この状態でwslコマンドを実行するとrockylinux9ディストリビューションが認識されています。

 PS > wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2
  rockylinux9    Stopped         2

デフォルトのディストリビューションをUbuntuから変更する場合は以下のコマンドを実行します。

PS > wsl --set-default rockylinux9
PS > wsl -l -v
  NAME            STATE           VERSION
* rockylinux9     Stopped         2
  Ubuntu-20.04    Running         2

rockylinux9を起動します。

PS > wsl -d rockylinux9

これでrockylinux9が利用できる状態になりました。デフォルトを変更した場合、windowsの検索窓からwslと検索して実行すれば、rockyにログインできます。

素の状態だとコマンドがまともに入っていないため、以下を実行すればある程度のコマンドが利用できる状態になります。お好みでどうぞ。

dnf update
# epelリポジトリ追加
dnf install epel-release
dnf config-manager --set-enabled crb
# よく使うコマンドのインストール
dnf install wget sysstat jq zip bind-utils procps which pip git vim
# systemdでルートプロセス起動※shutdown必要
cat <<EOL >> /etc/wsl.conf
[boot]
systemd=true
EOL

最後に、podmanをインストールします。appstreamに存在するため、dnfコマンドでインストールできます。とても簡単ですね!

dnf info podman
dnf install podman

ためしにnginxコンテナを起動してみます。

[root@LAPTOP-UTFIMSPL ~]# podman run nginx

✔ docker.io/library/nginx:latest
Trying to pull docker.io/library/nginx:latest...
Getting image source signatures
Copying blob 9862f2ee2e8c done  
Copying blob 7f7f30930c6b done  
Copying blob e1eeb0f1c06b done  
Copying blob f1f26f570256 done  
Copying blob 2836b727df80 done  
Copying blob 86b2457cc2b0 done  
Copying config 080ed0ed83 done  
Writing manifest to image destination
Storing signatures
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2023/04/02 13:23:49 [notice] 1#1: using the "epoll" event method
2023/04/02 13:23:49 [notice] 1#1: nginx/1.23.4
2023/04/02 13:23:49 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2023/04/02 13:23:49 [notice] 1#1: OS: Linux 5.15.90.1-microsoft-standard-WSL2
2023/04/02 13:23:49 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2023/04/02 13:23:49 [notice] 1#1: start worker processes
2023/04/02 13:23:49 [notice] 1#1: start worker process 24
2023/04/02 13:23:49 [notice] 1#1: start worker process 25
2023/04/02 13:23:49 [notice] 1#1: start worker process 26
2023/04/02 13:23:49 [notice] 1#1: start worker process 27
2023/04/02 13:23:49 [notice] 1#1: start worker process 28
2023/04/02 13:23:49 [notice] 1#1: start worker process 29
2023/04/02 13:23:49 [notice] 1#1: start worker process 30
2023/04/02 13:23:49 [notice] 1#1: start worker process 31

ばっちり起動しました!

2023/11/3追記
systemdがルートプロセスで起動しない場合、wslのバージョンが古い可能性があります。PowerShellより下記コマンドを実行して、wslを最新化してください(現時点のlatestは1.2.5)。

wsl --update

よろしければサポートお願いします!頂いたサポート費は、執筆活動に使わせて頂きます。