Podman コンテナを systemd ユーザーサービスとして自動起動するように設定する

Red Hat Enterprise LinuxBeginner
オンラインで実践に進む

はじめに

このチャレンジでは、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 や同様のシステム上で、従来の古い手法に代わる堅牢な方法として、信頼性の高いコンテナ化アプリケーションをデプロイするための基本となります。

✨ 解答を確認して練習