はじめに
このチャレンジでは、Podman コンテナを systemd ユーザーサービスとして自動起動するように設定する方法を学びます。これは、Red Hat Enterprise Linux (RHEL) 環境において、システム起動時にコンテナ化されたアプリケーションが確実に実行され、利用可能な状態に保つための一般的かつ推奨される手法です。このチャレンジを完了することで、podman を使用したコンテナのライフサイクル管理と、システムの systemd 初期化プロセスへの統合に関する実践的な経験を積むことができます。これはシステム管理者にとって不可欠なコアスキルです。
コンテナを systemd サービスとして自動起動するように設定する
このチャレンジでは、コンテナを systemd サービスとして自動起動するように設定します。これにより、コンテナ化されたアプリケーションが常に稼働し、アクセス可能な状態を維持できるようになります。
タスク
目標は、Podman コンテナ内で Nginx ウェブサーバーを実行し、システムの起動時に自動的に起動するように設定することです。
nginx:latestイメージに基づいてpodmanコンテナを作成し、実行します。- そのコンテナ用の
systemdユーザーサービスファイルを生成します。 labexユーザーに対して、サービスが自動的に開始されるように有効化します。labexユーザーのリンガリング(Lingering:常駐設定)を有効にし、アクティブなログインセッションがない場合でも、システム起動時にサービスが開始されるようにします。- コンテナが実行中であり、Nginx サービスにアクセスできることを確認します。
要件
- すべてのコンテナ管理タスクには
podmanを使用してください。 - コンテナイメージは
docker.io/library/nginx:latestを使用してください。 - コンテナ名は
my-nginxとしてください。 - ホストのポート
8080をコンテナのポート80にマッピングしてください。 systemdサービスファイルはpodman generate systemdを使用して生成してください。- 生成されたサービスファイルは
~/.config/systemd/user/container-my-nginx.serviceに配置してください。 loginctlを使用して、labexユーザーのリンガリングを有効にしてください。
例
このチャレンジを完了すると、curl http://localhost:8080 を実行して Nginx のウェルカムページにアクセスできるようになります。出力は以下のようになります。
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
まとめ
このチャレンジでは、podman を使用してコンテナを作成し、そのライフサイクルを管理するための systemd ユーザーサービスを生成する方法を学びました。サービスを自動起動するように設定し、リンガリングを有効にすることで、システム起動時に確実にコンテナが立ち上がるようにしました。このプロセスは、RHEL や同様のシステム上で、従来の古い手法に代わる堅牢な方法として、信頼性の高いコンテナ化アプリケーションをデプロイするための基本となります。



