3.5. コンテナーの起動
--restart
オプションは podman で完全にサポートされていないため、Podman を使用した systemd へのコンテナーの移植 で説明されているように、podman
を systemd サービスとして設定できます。
3.5.1. Podman での systemd ユニットファイルの使用 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで、Podman は既存のコンテナーまたは Pod のユニットファイルを生成します。podman generate systemd --new
を使用して、移植可能な別の systemd ユニットファイルを生成できます。--new
フラグでは、コンテナーの作成、起動、削除を行うユニットファイルを生成するように Podman に指示します。
以下のように、実行中の Red Hat Quay レジストリーから systemd ユニットファイルを作成します。
sudo podman generate systemd --new --files --name redis sudo podman generate systemd --new --files --name postgresql-quay sudo podman generate systemd --new --files --name quay sudo podman generate systemd --new --files --name postgresql-clairv4 sudo podman generate systemd --new --files --name clairv4
$ sudo podman generate systemd --new --files --name redis $ sudo podman generate systemd --new --files --name postgresql-quay $ sudo podman generate systemd --new --files --name quay $ sudo podman generate systemd --new --files --name postgresql-clairv4 $ sudo podman generate systemd --new --files --name clairv4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/lib/systemd/system
にユニットファイルをコピーして root ユーザーとしてインストールします。sudo cp -Z container-redis.service /usr/lib/systemd/system sudo cp -Z container-postgresql-quay.service /usr/lib/systemd/system sudo cp -Z container-quay.service /usr/lib/systemd/system sudo cp -Z container-postgresql-clairv4.service /usr/lib/systemd/system sudo cp -Z container-clairv4.service /usr/lib/systemd/system
$ sudo cp -Z container-redis.service /usr/lib/systemd/system $ sudo cp -Z container-postgresql-quay.service /usr/lib/systemd/system $ sudo cp -Z container-quay.service /usr/lib/systemd/system $ sudo cp -Z container-postgresql-clairv4.service /usr/lib/systemd/system $ sudo cp -Z container-clairv4.service /usr/lib/systemd/system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd マネージャーの設定を再読み込みするには、次のコマンドを実行します。
sudo systemctl daemon-reload
$ sudo systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスを有効にし、システムの起動時に起動します。
sudo systemctl enable --now container-redis.service sudo systemctl enable --now container-postgresql-quay.service sudo systemctl enable --now container-quay.service sudo systemctl enable --now container-postgresql-clairv4.service sudo systemctl enable --now container-clairv4.service
$ sudo systemctl enable --now container-redis.service $ sudo systemctl enable --now container-postgresql-quay.service $ sudo systemctl enable --now container-quay.service $ sudo systemctl enable --now container-postgresql-clairv4.service $ sudo systemctl enable --now container-clairv4.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.2. サービスの起動、停止、およびステータスのチェック リンクのコピーリンクがクリップボードにコピーされました!
Quay コンポーネントのステータスを確認します。
sudo systemctl status container-redis.service sudo systemctl status container-postgresql-quay.service sudo systemctl status container-quay.service sudo systemctl status container-postgresql-clairv4.service sudo systemctl status container-clairv4.service
$ sudo systemctl status container-redis.service $ sudo systemctl status container-postgresql-quay.service $ sudo systemctl status container-quay.service $ sudo systemctl status container-postgresql-clairv4.service $ sudo systemctl status container-clairv4.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Quay コンポーネントサービスを停止するには、以下を実行します。
sudo systemctl stop container-redis.service sudo systemctl stop container-postgresql-quay.service sudo systemctl stop container-quay.service sudo systemctl stop container-postgresql-clairv4.service sudo systemctl stop container-clairv4.service
$ sudo systemctl stop container-redis.service $ sudo systemctl stop container-postgresql-quay.service $ sudo systemctl stop container-quay.service $ sudo systemctl stop container-postgresql-clairv4.service $ sudo systemctl stop container-clairv4.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Quay コンポーネントサービスを起動するには、以下を実行します。
sudo systemctl start container-redis.service sudo systemctl start container-postgresql-quay.service sudo systemctl start container-quay.service sudo systemctl start container-postgresql-clairv4.service sudo systemctl start container-clairv4.service
$ sudo systemctl start container-redis.service $ sudo systemctl start container-postgresql-quay.service $ sudo systemctl start container-quay.service $ sudo systemctl start container-postgresql-clairv4.service $ sudo systemctl start container-clairv4.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.3. 再起動後の再起動のテスト リンクのコピーリンクがクリップボードにコピーされました!
サービスを設定して有効にしたら、システムを再起動します。システムを再起動したら、podman ps
を使用して Quay コンポーネントのすべてのコンテナーが再起動されていることを確認します。
この場合、Quay
コンテナー自体は起動できませんでした。これは、セキュリティースキャンが Quay で有効にされている場合に、起動時に Clair への接続を試みるためです。ただし、Clair は初期化を完了せず、接続を受け入れることができないため、結果として Quay はすぐに終了します。この問題を解決するには、以下のセクションにあるように、Quay サービスを Clair サービスの依存関係を持つように設定する必要があります。
3.5.4. Clair の Quay の依存関係の設定 リンクのコピーリンクがクリップボードにコピーされました!
Quay の systemd
サービスファイルで、After=container-clairv4.service
を設定して、[Unit]
セクションに Clair サービスの依存関係を設定します。Clair コンテナーの初期化に時間を指定するには [Service]
セクションに遅延を追加します (RestartSec=30
など)。以下は、Clair の依存関係を設定した後に変更された Quay ファイルの例です。
/usr/lib/systemd/system/container-quay.service
Quay サービス設定を更新したら、サーバーを再起動して podman ps
をすぐに実行します。
最初は Quay
コンテナーは利用できませんが、RestartSec
の遅延の期限が切れると、起動するはずです。
Quay
コンテナーの CREATED
フィールドには、サービス定義に設定されるように作成時間に 30 秒の差異が示されます。
quay-server.example.com
で Red Hat Quay レジストリーにログインし、すべてが正常に再起動されていることを確認します。