GNU/Linux >> Linux の 問題 >  >> Linux

PodmanでSystemdサービスとしてコンテナを実行する方法

ご存知のとおり、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サービスとして実行する方法


Linux
  1. systemd サービスの出力をファイルにリダイレクトする方法

  2. systemd サービスを停止する方法

  3. シャットダウン直前にsystemdでスクリプトを実行する方法は?

  1. LinuxでSystemctlを使用してSystemdサービスを管理する方法

  2. LinuxでSystemdサービスを作成する方法

  3. root アクセスで実行するように Systemd サービスを構成する

  1. Linux – SystemdでTtyを減らす方法は?

  2. systemd でのシャットダウン時に、他のすべての前にスクリプトを実行するにはどうすればよいですか?

  3. Systemd で tty を減らすには?