podman-composeでロギング・ドライバの設定ができない話

まあ、タイトルで以上なんですが。
最近になって勤務先で CentOS8 を使う話がちらほら出てきたので、手慣らしにと思って仮想マシンひとつ立てて、CentOS8 入れてこの連休の間に戯れておりまして。
と言いながら、本当の目的はこのサイトが動いている VPS を CentOS8 版に乗り換えて、そこで Podman 使って全サービスをコンテナ化してやろうかという目論見であったりします。
そういうわけで、ここ3日ばかり Podman で遊んでいたのですが・・・・・・。

コンテナを複数立てた場合、気になるのはそれらのログをどう捌くかという問題です。たとえばWebサーバをコンテナで立てた時に、アクセスログを見るためにわざわざ podman logs するわけにもいきません。
というわけで、「ロギング・ドライバを fluentd にして、それを MongoDB に入れてログを解析できるようにしよう」と、このロートルにしてはハイカラなことを考えまして、いそいそと docker-compose.yml を書き換えて podman-compose up、したまではよかったのですが。これが一向にログが取れない。
何じゃこりゃー、と思ってググったりすることしばし。(ここまでの)答えは podman-run(1) の man にありました。

–log-driver=”driver”

Logging driver for the container. Currently available options are k8s-file,
journald, and none, with json-file aliased to k8s-file for scripting compatibility.

えーと・・・・・・つまり、現時点で Podman は fluentd に対応していない、と。

orz

CentOS8 の目玉のひとつであろう Podman、まだまだ発展途上のようで。とほほ。
しかし、fluentd が使えないということであれば、代替策を考えればなりません。
そこでまたいろいろとググった結果、journald であればログの集約もできるし検索性もある、ということで、その線で行くことにしました。
で、またいそいそと docker-compose.yml を書き換えて podman-compose up。
立ち上げたコンテナにはWebサーバ(ちなみにnginx)があったので、これのアクセスログが journalctl で見られるようになるはすだー、と、わくわくしながら -f つけて見守っていたのですが・・・・・・やはりここでもログが取れない。えー。
何か docker-compose.yml の書式を間違えたのか、と思って何度も確認したのですが、問題なさそうです。ちなみに、問題の箇所はここ。

logging:
driver: “journald”
options:
tag: “{{.Name}}”

間違いないよなあ、あれえ?
と悩むことしばし。もしかしたら、と思って、Webサーバのコンテナを podman-compose を使わずに podman run で個別に立ち上げ直してみました。その際に –log-driver オプションで journald を指定したところ、今度はちゃんと journalctl でアクセスログが見られました。んー??
で、改めて、podman-compose を実行した際の出力を確かめてみました。

podman run –name=nginx_1 -d –pod=hogehoge –label io.podman.compose.config-hash=123 –label io.podman.compose.project=hogehoge –label io.podman.compose.version=0.0.1 –label com.docker.compose.container-number=1 –label com.docker.compose.service=nginx -v /etc/nginx:/etc/nginx -v /home/virtual:/var/www/html –add-host mariadb:127.0.0.1 –add-host mariadb_1:127.0.0.1 –add-host php-fpm:127.0.0.1 –add-host php-fpm_1:127.0.0.1 –add-host nginx:127.0.0.1 –add-host nginx_1:127.0.0.1 –restart always my_nginx:latest

うーん・・・・・・ –log-driver をつけた形跡がない?
これはつまり、podman-compose が logging の設定をパースできていないということですか?
こんな、ある意味かなりでかい欠落が、今まで見落とされていたと??
もしかして issues とかプルリクにそういう指摘があるんじゃないかしらん、と思って podman-compose の github を調べてみたのですが、そういう問題はひとつも無し。うーん、なんじゃこりゃー。

こんなでかい欠落なんだから、どこかで言及されているんではないかと思ってまたググったりしてみたのですが、まったく見つからず。唯一見つかったのは、RedHat のカスタマーポータルにあったひとつの投稿のみ。

I have determined that while “podman run” and “podman create” will leverage the “–log-driver=journald” parameter, podman-compose ignores logging parameters. Thanks.

うんうん、やっぱりそうですよねー。

orz

まあ、現時点での podman-compose はほぼ個人によって開発されたある意味非公式なものなので、この人が RedHat に問い合わせても事はまったく動かないと思うのですが・・・・・・RedHat さん、Docker の代替として Podman を提供してるんですから、お願いですから公式側でちゃんとした podman-compose をリリースしてくださいよ。これじゃ不便でしかたがない。

オチはありません。Thanks.

podman-composeでロギング・ドライバの設定ができない話” に対して1件のコメントがあります。

  1. てんぽく より:

    追記。
    RedHat は、コンテナオーケストレーションにおいては Kubernetes がデファクトスタンダードになっているという認識らしく、compose する際も Kubernetes YAML を使っていきますよー、という立場をとっているらしいです。つまり、docker-compose 形式の YAML はサポートせず、Kubernetes の manifest を使いましょう、というわけ。というわけで、公式の podman-compose の登場はあり得ないということになりそうです。ぬーん。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください