- Quadletは、Podmanコンテナをsystemdサービスとして実行できるようにするツール。これは、サーバー再起動後にバックグラウンドでコンテナを自動起動するのに役立つ。
- 以前は
podman generate systemd コマンドを使っていたが、現在はQuadletへの移行が推奨されている。
従来の方法
- コンテナを作成し、systemdサービスファイルを生成した後、そのファイルを適切なディレクトリへ移動してサービスを有効化する必要があった。
- この手順はコマンドが長く反復的で、手動でファイルを修正しなければならない不便さがあった。
問題点
- 従来の方法は複雑で、柔軟性にも欠けていた。
- Docker Composeの手軽さと比べると、多くの作業を手動で行う必要があった。
Quadlet
- Quadletを使えば、
.container ファイルを作成してコンテナを管理できる。
[Container] セクションで、イメージ、ポート、ボリューム、環境変数を設定できる。
[Service] セクションでは、コンテナの再起動ポリシーを設定できる。
[Install] セクションでは、起動時の自動開始を設定できる。
優れている点
- 1つのファイルですべての設定を管理でき、systemdのあらゆるオプションを利用できる。
- 設定ファイルを書くほうが、スクリプトを書くより簡単。
- 依存関係を簡単に管理できる。
依存関係
- アプリコンテナがデータベースコンテナに依存する場合は、
[Unit] セクションで Requires と After オプションを使って依存関係を設定できる。
ファイルが多すぎる?
- 複数のファイルに分けることで、複雑さを減らせることがある。
- 関連するファイル同士をグループ化して管理できる。
イメージの更新
AutoUpdate=registry オプションを使えば、podman auto-update コマンドでイメージ更新とコンテナ再起動が可能。
latest タグの使用は危険な場合があるため、具体的なバージョンタグの使用が推奨される。
podman-composeについて
podman-compose は、ComposeファイルをPodmanとsystemd向けに変換するスクリプトだが、長期的な代替手段としては適していない。
- Quadletは、Podmanのデーモンレス設計とより相性がよい。
追加資料
- Quadletをより深く理解するために、
podman-systemd.unit のマニュアルページを読むことが推奨される。
- Quadletはコンテナだけでなく、pod、ネットワーク、ボリュームも管理できる。
- systemdユニットファイルの作成に慣れていないなら、
systemd.unit と systemd.service のマニュアルページも参考にするとよい。
podlet は、PodmanコマンドやComposeファイルからQuadletファイルを生成するのに役立つツール。
1件のコメント
Hacker Newsの意見
QuadletはDocker Composeの代替として、「本番環境に近い環境で相互依存するコンテナを実行する」用途では有用だが、開発環境ではあまり有用ではない
~/.config/containers/systemdに置く必要があるため、プロジェクトとの分離が難しいQuadletを知ってAtomic OSとrootless Quadletをベースにホームラボを構築し、強く勧めている
QuadletはPodmanから生まれた最高のツールの1つであり、コンテナベースの運用に関心のある人に勧められる
Docker Composeの利便性のため、多くの人がDockerからPodmanへの移行をためらっている
Podman-Composeは「メンテナンスされていない」と言及されていたが、Podletも似たような状態である
PodmanのupstreamがDebian/Ubuntu向けのリポジトリを提供しておらず不便である
openSUSE MicroOSを使ってPodmanコンテナをsystemd/quadlet配下で実行するようになり、現在の構成に満足している
systemdとPodmanの統合が気に入っている
QuadletがHacker Newsのフロントページに載ったのは興味深い
Quadletはコンテナを通常のシステムサービスのように使えるようにしてくれる