11.11. Toolbx を使用した bootc コンテナーの検査
システムにソフトウェアをインストールすると、システムの動作が変更したり、不要になったファイルやディレクトリーが残されたりするなど、一定のリスクが生じます。このようなリスクは、RHEL bootc に含まれる Toolbx ユーティリティーに、好みの開発およびデバッグツール、エディター、ソフトウェア開発キット (SDK) をインストールすることで回避できます。RHEL bootc は、ベースオペレーティングシステムに影響を与えずに完全に変更できるコンテナーのイメージです。less、lsof、rsync、ssh、sudo、unzip などのコマンドを使用して、ホストシステム上で変更を実行できます。
Toolbx ユーティリティーは次のアクションを実行します。
-
registry.access.redhat.com/ubi9/toolbox:latestイメージをローカルシステムにプルする - イメージからコンテナーを起動する
- コンテナー内でシェルを実行し、そこからホストシステムにアクセスできる
Toolbx は、Toolbx コンテナーを作成したユーザーの権限に応じて、ルートコンテナーまたはルートレスコンテナーを実行できます。ホストシステムでルート権限を必要とするユーティリティーも、ルートコンテナーで実行する必要があります。
デフォルトのコンテナー名は rhel-toolbox です。bootc コンテナーを検査するには、次の手順に従います。
手順
toolbox createコマンドを使用して Toolbx コンテナーを起動し、toolbox enterコマンドを使用してコンテナーに入ります。ルートレスユーザーとして:
$ toolbox create <mytoolbox>ルートユーザーとして:
$ sudo toolbox create <mytoolbox> Created container: <mytoolbox> Enter with: toolbox enter正しいイメージを取得したことを確認します。
[user@toolbox ~]$ toolbox list IMAGE ID IMAGE NAME CREATED fe0ae375f149 registry.access.redhat.com/ubi{ProductVersion}/toolbox 5 weeks ago CONTAINER ID CONTAINER NAME CREATED STATUS IMAGE NAME 5245b924c2cb <mytoolbox> 7 minutes ago created registry.access.redhat.com/ubi{ProductVersion}/toolbox:8.9-6Toolbx コンテナーに入ります。
[user@toolbox ~]$ toolbox enter <mytoolbox>- オプション: 正しいイメージを取得したことを確認します。
<mytoolbox>コンテナー内でコマンドを実行し、コンテナーの名前とイメージを表示します。⬢ [user@toolbox ~]$ cat /run/.containerenv engine="podman-4.8.2" name="<mytoolbox>" id="5245b924c2cb..." image="registry.access.redhat.com/ubi{ProductVersion}/toolbox" imageid="fe0ae375f14919cbc0596142e3aff22a70973a36e5a165c75a86ea7ec5d8d65c"
Toolbx を使用して開発ツールをインストールします。
Emacs テキストエディター、GCC コンパイラー、GNU デバッガー (GDB) など、選択したツールをインストールします。
⬢[user@toolbox ~]$ sudo dnf install emacs gcc gdbオプション: ツールがインストールされていることを確認します。
⬢[user@toolbox ~]$ dnf repoquery --info --installed <package_name>インストール後、ルートレスユーザーとしてこれらのツールを引き続き使用できます。
Toolbx を使用して、ツールをホストシステムにインストールせずに、ホストシステムのトラブルシューティングを行います。
journalctlコマンドを実行できるようにするには、systemdスイートをインストールします。⬢[root@toolbox ~]# dnf install systemdホスト上で実行しているすべてのプロセスのログメッセージを表示します。
⬢[root@toolbox ~]# j journalctl --boot -0 Jan 02 09:06:48 user-thinkpadp1gen4i.brq.csb kernel: microcode: updated ear> Jan 02 09:06:48 user-thinkpadp1gen4i.brq.csb kernel: Linux version 6.6.8-10> Jan 02 09:06:48 user-thinkpadp1gen4i.brq.csb kernel: Command line: BOOT_IMA> Jan 02 09:06:48 user-thinkpadp1gen4i.brq.csb kernel: x86/split lock detecti> Jan 02 09:06:48 user-thinkpadp1gen4i.brq.csb kernel: BIOS-provided physical>カーネルのログメッセージを表示します。
⬢[root@toolbox ~]# journalctl --boot -0 --dmesg Jan 02 09:06:48 user-thinkpadp1gen4i.brq.csb kernel: microcode: updated ear> Jan 02 09:06:48 user-thinkpadp1gen4i.brq.csb kernel: Linux version 6.6.8-10> Jan 02 09:06:48 user-thinkpadp1gen4i.brq.csb kernel: Command line: BOOT_IMA> Jan 02 09:06:48 user-thinkpadp1gen4i.brq.csb kernel: x86/split lock detecti> Jan 02 09:06:48 user-thinkpadp1gen4i.brq.csb kernel: BIOS-provided physical> Jan 02 09:06:48 user-thinkpadp1gen4i.brq.csb kernel: BIOS-e820: [mem 0x0000>nmapネットワークスキャンツールをインストールします。⬢[root@toolbox ~]# dnf install nmapネットワーク内の IP アドレスとポートをスキャンします。
⬢[root@toolbox ~]# nmap -sS scanme.nmap.org Starting Nmap 7.93 ( https://nmap.org ) at 2024-01-02 10:39 CET Stats: 0:01:01 elapsed; 0 hosts completed (0 up), 256 undergoing Ping Scan Ping Scan Timing: About 29.79% done; ETC: 10:43 (0:02:24 remaining) Nmap done: 256 IP addresses (0 hosts up) scanned in 206.45 seconds-
-sSオプションは TCP SYN スキャンを実行します。Nmap のスキャンタイプのほとんどは、生のパケットを送受信するため、特権ユーザーのみが使用できます。UNIX システムではルートアクセスが必要です。
-
Toolbx bootc コンテナーを停止します。
コンテナーを離れてホストに戻ります。
⬢ [user@toolbox ~]$ exitツールボックスコンテナーを停止します。
⬢ [user@toolbox ~]$ podman stop <mytoolbox>オプション: ツールボックスコンテナーを削除します。
⬢ [user@toolbox ~]$ toolbox rm <mytoolbox>または、
podman rmコマンドを使用して bootc コンテナーを削除することもできます。