virtualboxでRHEL9を起動してpodmanをサクッと起動

## はじめに
本記事はタイトルの通りvirutalboxにRHEL9を構築後、podmanを起動させる手順を記載します。
なお、virutalboxはインストール済みの想定です。

※virutalboxのインストールはこちらから
https://www.virtualbox.org/

使用及び構築する環境は以下の通り
Virtualbox:7.0.10
Red Hat Enterprise Linux:9.4
Podman:4.9.4

## Podmanとは
Podman (POD マネージャー) は、Linux® システム上でコンテナを開発、管理、実行するための オープンソースツールです。Red Hat® のエンジニアがオープンソース・コミュニティと共に開発した Podman は、libpod ライブラリを使用してコンテナエコシステム全体を管理します。 

アーキテクチャがデーモンレスで包括的であることから、Podman はコンテナ管理の選択肢として、より安全で利用しやすいものとなっています。また、開発者は Buildah や Skopeo などの付属のツールと機能を使用して、コンテナ環境をニーズに合わせてカスタマイズすることができます。 

https://www.redhat.com/ja/topics/containers/what-is-podman#:~:text=Podman%20(POD%20%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%E3%83%BC)%20%E3%81%AF%E3%80%81,%E5%85%A8%E4%BD%93%E3%82%92%E7%AE%A1%E7%90%86%E3%81%97%E3%81%BE%E3%81%99%E3%80%82

## RHELのダウンロード
以下のURLにアクセスしてisoファイルをダウンロードする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/6b1bef1d-068c-d2d1-40a4-3d3b20d2588d.png)


https://access.redhat.com/downloads/content/479/ver=/rhel---9/9.4/x86_64/product-software

## 仮想マシン作成
virualboxから「新規」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/c53c8f43-fe9e-be03-c48f-fe4c2e116a64.png)

仮想マシン名：RHEL　#こんかいはRHEL9
先ほどダウンロードしたRHELのisoを選択し「次へ」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/65f9fa34-ed58-e657-ea0f-93b8da2f45eb.png)

ここはなにも選択せずに「次へ」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/a57876d3-7ef4-0ee7-7be3-2d8ecf35dd71.png)

Podmanの最低要件を満たす値を設定し「次へ」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/761c335c-88e7-626f-7438-7138cecff068.png)
https://docs.redhat.com/ja/documentation/red_hat_codeready_containers/2.0/html/release_notes_and_known_issues/minimum-system-requirements_rn-ki#_for_openshift_container_platform

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/0f3b7725-77c7-90ec-56ec-bee5b0fbf2a2.png)


ストレージの容量も最低要件を満たす値を設定し「次へ」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/87149f55-e43b-0f7a-b53b-3e5a3d647cdc.png)

設定に誤りがないことを確認して「完了」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/b88d8069-80cb-bacf-1050-a358866eb63d.png)

仮想マシンが作成されたら「設定」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/63370274-1788-0610-350c-d57f0c2cf946.png)

「ネットワーク」⇒「アダプター2」を順にクリックし
ネットワークアダプターを有効化にチェックを入れる
割り当てを「ブリッジアダプター」に変更し「OK」をクリックする


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/f1d48806-cfa9-683b-36a6-cdb06e4bdc06.png)

ここまでで仮想マシンの設定はOK

## RHEL9のインストール
事前準備として仮想マシンに設定するIPアドレス情報を採取する
コマンドプロンプトで以下コマンドを実施
```
ipconfig /all
```
筆者の場合はWiFiで接続しており、192.168.3.0/24のネットワークアドレス帯を使用しており
仮想マシンに設定するアドレスは192.168.3.150とする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/12298569-54a9-5a48-2a9b-6492f6876eb0.png)

「RHEL9」⇒「起動」⇒「通常起動」の順にクリックする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/eeef81e5-1378-cc0d-25ae-8de5fe47ea94.png)

デフォルトで「Test this media & install Red Hat Enterprise Linux 9.4」が選択されているため
上矢印キーで[Install Red Hat Enterprise Linux 9.4]に移動してエンター
※マウスポインタをvirutalboxの外に移動させる際は「Ctrl」キーを押下する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/d70129e7-b874-dd86-6e8b-5cbfad57a824.png)

「日本語」を選択して「続行」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/0270ccfe-645b-bd36-c7ad-cb7784f845cc.png)

インストール概要に関しては以下の項目に関して設定していきます。
①インストール先
②ソフトウェアの選択
③ネットワークとホスト名
④rootパスワード

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/15611bd2-c17f-4b04-db2b-353fcb26181f.png)

①インストール先は変更せずに「完了」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/8b6bb19c-28be-462f-ef0b-338b5a06b018.png)

②ソフトウェアの選択は「最小限のインストール」を選択してクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/fe2cda2d-21a3-c4ff-4159-51342d7e17e8.png)

③ネットワークとホスト名
ホスト名に「RHEL9」と入力して「適用」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/7be2f926-e29f-1ab4-59e1-eb4523928f78.png)

enp0s8を選択して有効化後「設定」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/d8634c3f-6a80-f877-a06b-94946001ed1b.png)

「IPv4」タグをクリックしてメソッドを「手動」に変更

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/482d4f12-6a1a-f720-5cea-6844aa34fb8f.png)

「追加」をクリック後アドレス部位を入力する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/3bcac7ea-aaba-a0aa-2dec-e9cbe77cf2d3.png)

上記設定が反映されていることを確認して「完了」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/c27b9919-12a0-c1c7-8f8b-ec5a7850784d.png)

④rootパスワードを入力、「パスワードによるroot SSHログインを許可」にチェック後「完了」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/dc010863-1a26-e562-055e-4040e8fac9f9.png)

「インストールの開始」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/c343255a-9a83-6ae9-f049-8d165a0936cf.png)

「システムの再起動」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/80a73ea1-a71a-1e7d-ccd3-30310da4541c.png)

これにてRHEL9のインストールは完了です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/1a799b3e-5634-1c51-8855-f3d4fcbc3127.png)

## Podmanインストールの事前準備

RHEL9のisoをマウントする
RHEL9の「設定」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/472bca6e-9b5c-8ed0-b1b6-885ade169b28.png)

「ストレージ」⇒「コントローラー：IDE、空」⇒「ディスクマーク」⇒「rhel-9.4-x86_64-dvd.iso」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/dd6dedd5-78b0-e396-c31b-7ebeff6885f9.png)

「OK」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/4bfabab2-bebb-4137-b34a-3a300b75dd43.png)



teratermにて先ほど構築した仮想マシンに接続する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/b7277fdf-1c71-8003-f992-7f521fae0401.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425580/daa5aa30-42ad-b1e3-91dc-8bab6eb9cda7.png)

isoイメージマウント用のディレクトリ作成
```
[root@RHEL9 ~]# mkdir /mnt/rhiso;ls -ld /mnt/rhiso
drwxr-xr-x. 2 root root 6  7月 10 16:31 /mnt/rhiso
```

isoイメージをマウント
```
[root@RHEL9 ~]# mount -o loop /dev/sr0 /mnt/rhiso/ ;ls -l  /mnt/rhiso
合計 44
drwxr-xr-x. 1 root root  2048  4月 19 16:55 AppStream
drwxr-xr-x. 1 root root  2048  4月 19 16:55 BaseOS
drwxrwxr-x. 1 root root  2048  4月 12 12:32 EFI
-r--r--r--. 1 root root  8154  4月 19 16:39 EULA
-r--r--r--. 1 root root 18092  4月 19 16:39 GPL
-r--r--r--. 1 root root  1669  4月 19 16:39 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root  3682  4月 19 16:39 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root  1455  4月 19 17:11 extra_files.json
drwxrwxr-x. 1 root root  2048  4月 12 12:32 images
drwxrwxr-x. 1 root root  2048  4月 12 12:32 isolinux
-r--r--r--. 1 root root   103  4月 19 16:55 media.repo
```

リポジトリをマウントしたisoに変更
```
cat <<EOF > /etc/yum.repos.d/rhel9.repo
[local-BaseOS]
name=BaseOS Packages Red Hat Enterprise Linux 9
metadata_expire=-1
gpgcheck=1
enabled=1
baseurl=file:///mnt/rhiso/BaseOS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[local-AppStream]
name=AppStream Packages Red Hat Enterprise Linux 9
metadata_expire=-1
gpgcheck=1
enabled=1
baseurl=file:///mnt/rhiso/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF
```

キャッシュクリア

```
[root@RHEL9 ~]# dnf clean all
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.

0 ファイルが削除されました
```

Linux便利ツール諸々インストール
```
[root@RHEL9 ~]#dnf install -y net-tools traceroute tcpdump zip jq bash-completion container-tools
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません
～～～～中略～～～～
インストール済み:
  bash-completion-1:2.11-5.el9.noarch           libibverbs-48.0-1.el9.x86_64                        libpcap-14:1.10.0-4.el9.x86_64
  libpkgconf-1.7.3-10.el9.x86_64                net-tools-2.0-0.62.20160912git.el9.x86_64           pkgconf-1.7.3-10.el9.x86_64
  pkgconf-m4-1.7.3-10.el9.noarch                pkgconf-pkg-config-1.7.3-10.el9.x86_64              tcpdump-14:4.99.0-9.el9.x86_64
  traceroute-3:2.1.0-18.el9.x86_64              unzip-6.0-56.el9.x86_64                             zip-3.0-35.el9.x86_64

完了しました!
```

## Podmanインストール

```
[root@RHEL9 ~]#dnf install podman -y
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.

BaseOS Packages Red Hat Enterprise Linux 9                                                                    21 MB/s | 2.1 MB     00:00
AppStream Packages Red Hat Enterprise Linux 9                                                                 44 MB/s | 7.0 MB     00:00
依存関係が解決しました。
～～～～中略～～～～
インストール済み:
  aardvark-dns-2:1.9.0-1.el9.x86_64           conmon-2:2.1.10-1.el9.x86_64                  container-selinux-3:2.229.0-1.el9.noarch
  containers-common-2:1-61.el9.x86_64         criu-3.19-1.el9.x86_64                        criu-libs-3.19-1.el9.x86_64
  crun-1.14.3-1.el9.x86_64                    fuse-common-3.10.2-8.el9.x86_64               fuse-overlayfs-1.13-1.el9.x86_64
  fuse3-3.10.2-8.el9.x86_64                   fuse3-libs-3.10.2-8.el9.x86_64                libnet-1.2-6.el9.x86_64
  libslirp-4.4.0-7.el9.x86_64                 netavark-2:1.10.3-1.el9.x86_64                podman-2:4.9.4-0.1.el9.x86_64
  protobuf-c-1.3.3-13.el9.x86_64              shadow-utils-subid-2:4.9-8.el9.x86_64         slirp4netns-1.2.3-1.el9.x86_64
  yajl-2.1.0-22.el9.x86_64

完了しました!
```

Podmanのインストールは上記で完了

```
[root@RHEL9 ~]# podman version
Client:       Podman Engine
Version:      4.9.4-dev
API Version:  4.9.4-dev
Go Version:   go1.21.7 (Red Hat 1.21.7-1.el9)
Built:        Tue Feb 20 18:41:16 2024
OS/Arch:      linux/amd64
[root@RHEL9 ~]# podman image ls
REPOSITORY  TAG         IMAGE ID    CREATED     SIZE
```

## 動作検証
```
[root@RHEL9 ~]# podman run docker.io/hello-world:latest
Trying to pull docker.io/library/hello-world:latest...
Getting image source signatures
Copying blob c1ec31eb5944 done   |
Copying config d2c94e258d done   |
Writing manifest to image destination

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

 [root@RHEL9 ~]# podman ps -a
CONTAINER ID  IMAGE                                 COMMAND     CREATED         STATUS                     PORTS       NAMES
b71713d855b5  docker.io/library/hello-world:latest  /hello      58 seconds ago  Exited (0) 58 seconds ago              eloquent_mcclintock
[root@RHEL9 ~]#
[root@RHEL9 ~]# podman image ls
REPOSITORY                     TAG         IMAGE ID      CREATED        SIZE
docker.io/library/hello-world  latest      d2c94e258dcb  14 months ago  28.5 kB
[root@RHEL9 ~]#

```

以上です。お疲れ様でした。



ーーー
本投稿は、執筆者の個人的な意見や知識に基づいて提供されています。技術情報は慎重に取り扱っていますが、正確性や完全性を保証するものではありません。従って、本投稿の内容を利用することによって生じたいかなる損害やトラブルに対しても、執筆者および運営者は一切の責任を負いません。各自の判断と責任においてご利用ください。

特に、プログラムの実行やシステムの変更を行う際には、事前にバックアップを取るなどの安全対策を講じることを強くお勧めします。また、公式のドキュメントや信頼できる情報源を併せてご参照ください。
ーーー