ご存知のとおり、podmanは、コンテナーを構築、実行、管理するための環境を提供する、デーモンを使用しないオープンソースのツールです。コンテナをsystemdサービスとして実行すると、システムが再起動されたときにコンテナが自動的に起動します。
この投稿では、RHEL 8、CentOS 8、RockyLinux8などのRHELベースのディストリビューションでpodmanを使用してコンテナーをsystemdサービスとして実行する方法を学習します。
前提条件:
- 最小限のRHELベースのOSインストール。
- 安定したインターネット接続
- root権限を持つSudoユーザー
このデモでは、最小限のRHEL 8.5を使用していますが、これらの手順はCentOS8とRockyLinux8にも適用できます。手順に進んでみましょう。
ステップ1)Podmanをインストールする
RHEL 8にpodmanをインストールするには、
を実行します。$ sudo dnf install @container-tools -y
CentOS 8 / Rocky Linux 8の場合、実行
$ sudo dnf install -y podman
podmanのインストールを確認する
podmanが正常にインストールされているかどうかを確認するには、以下のpodmanコマンドを使用して「hello-world」コンテナをスピンしてみてください。
$ podman -v podman version 3.3.1 $ $ podman run 'hello-world'
注:podmanを初めて実行すると、コンテナイメージをダウンロードするレジストリを選択するように求められます。
上記のコマンドの出力は以下のようになります:
上記の知事は、podmanが正常にインストールされたことを確認します。次のステップに進みましょう。
ステップ2)コンテナのSystemdサービスを生成する
rsyslogコンテナのsystemdサービスを生成するとします。まず、次のpodmanコマンドを使用してrsyslogコンテナを起動します。
$ podman run -d --name <Container-Name> <Image-Name>
注:特定のレジストリからrsyslogコンテナイメージをダウンロードする場合は、次の構文を使用します。
$ podman run -d --name container-name <registry-URL>/<image-name>
このデモンストレーションでは、RedHatレジストリを使用しました。したがって、最初にレジストリにログインします
$ podman login registry.access.redhat.com Username: <Specify-User-Name> Password: <Enter-Password> Login Succeeded! $
次に、次のpodmanコマンドを使用してコンテナを回転させてみます
$ podman run -d --name rsyslog-server registry.access.redhat.com/rhel7/rsyslog $ podman ps
次に、rsyslog-serverコンテナのsystemdサービスを作成し、次のコマンドを実行します
$ mkdir -p .config/systemd/user $ cd .config/systemd/user/ $ podman generate systemd --name rsyslog-server --files --new /home/sysops/.config/systemd/user/container-rsyslog-server.service $
上記のように、systemdサービスが作成されます。
「podmangeneratesystemd」コマンドの詳細については、ヘルプページを参照してください
$ podman generate systemd --help
ステップ3)ContainerSystemdServiceを開始して有効にする
次のsystemctlコマンドを実行して、rsyslog-serverコンテナのsystemdサービスを開始して有効にします。
$ cd .config/systemd/user/ $ systemctl --user daemon-reload $ systemctl --user enable container-rsyslog-server.service $ systemctl --user restart container-rsyslog-server.service
次に、systemdサービスのステータスとコンテナのステータスを確認して実行します
$ systemctl --user status container-rsyslog-server.service $ podman ps
これで、システムが再起動されると、containerはsystemdサービスを介して自動的に開始されます。それでは、一度再起動して、コンテナサービスを確認しましょう。
$ sudo reboot
システムがオンラインに戻ったら、システムにログインしてコンテナサービスを確認します
$ podman ps $ cd .config/systemd/user/ $ systemctl --user status container-rsyslog-server.service
これは、rsyslog-serverコンテナがsystemdサービスを介して再起動後に自動的に開始されることを確認します。
これですべてです。参考になると思います。フィードバックや質問を共有してください。
また読む :Dockerを使用してJenkinsコンテナをSystemdサービスとして実行する方法