makisato
2025年9月10日 13時19分
お世話になっております。佐藤と申します。
2点質問がございます。
質問1)
コンテナを3個起動して、コンテナ名 xxx1がSleepにはいるとHWがスリープになり、ほかの2つのコンテナもスリープするという認識でおります。
マニュアルの「状態遷移トリガにコンテナ終了通知を利用する」を利用して、power-utils.confのTARGET='xxx1'として、xxx1というコンテナをトリガにしています。xxx1が終了すると、LEDの点灯をみると消灯しているのでスリープに遷移しているようです。
しかし、次の起動時にpodman ps -aをみると、
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
armadillo:/# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
5c050b946f17 localhost/xxx2:latest python_launch 19 hours ago Up 19 hours 0.0.0.0:21->21/tcp, 0.0.0.0:21100-21104->211
00-21104/tcp xxx2
2d42ffded463 localhost/xxx3:latest python_launch 19 hours ago Up 19 hours 0.0.0.0:8080->5000/tcp
xxx3
2364cadbac11 localhost/xxx1:latest python_launch 23 minutes ago Up 23 minutes
xxx1
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Statusをみるとxxx2とxxx3は up 19hoursとなっており、xxx1のSleepタイミングと連動しておらず、ずっと起床しているようにもみえます。
xxx2とxxx3もsleepしているという理解でよいでしょうか?起床しているということでしょうか?
または、xxx2とxxx3の両コンテナもSleepさせるには別の措置がいるのでしょうか?
質問2)
マニュアルの「状態遷移トリガにコンテナ終了通知を利用する」にそって、xxx1.confの記載に
コンテナの終了を検知するためのフック、「add_args --hooks-dir=/etc/containers/aiot_gw_container_hooks.d 」を加えていますが、
コンテナのログを見ると、podman logs xxx1で確認すると、.confの該当のフックの行が「 add_args: not found」となっています。
こちらのエラーはどうすればよいでしょうか?いまのところ、上で述べたようにxxx1についてSleep遷移はできています。
よろしくお願いいたします。
==========
製品型番:Armadillo-A6E
Debian/ABOSバージョン:
Abos:3.22.1-at
Debian:
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.21.3
PRETTY_NAME="Alpine Linux v3.21"
カーネルバージョン:5.10.235-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:
==========
at_shinya.koga
2025年9月12日 11時50分
アットマークテクノの古賀です。
佐藤さん(2025年9月10日 13時19分):
>2点質問がございます。
以下、順に回答します。
>質問1)
>コンテナを3個起動して、コンテナ名 xxx1がSleepにはいるとHWがスリープになり、ほかの2つのコンテナもスリープするという認識でおります。
>マニュアルの「状態遷移トリガにコンテナ終了通知を利用する」を利用して、power-utils.confのTARGET='xxx1'として、xxx1というコンテナをトリガにしています。xxx1が終了すると、LEDの点灯をみると消灯しているのでスリープに遷移しているようです。
はい、そのはずです。
> しかし、次の起動時にpodman ps -aをみると、
>ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
>armadillo:/# podman ps -a
>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
> NAMES
>5c050b946f17 localhost/xxx2:latest python_launch 19 hours ago Up 19 hours 0.0.0.0:21->21/tcp, 0.0.0.0:21100-21104->211
>00-21104/tcp xxx2
>2d42ffded463 localhost/xxx3:latest python_launch 19 hours ago Up 19 hours 0.0.0.0:8080->5000/tcp
> xxx3
>2364cadbac11 localhost/xxx1:latest python_launch 23 minutes ago Up 23 minutes
> xxx1
>ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
>
>Statusをみるとxxx2とxxx3は up 19hoursとなっており、xxx1のSleepタイミングと連動しておらず、ずっと起床しているようにもみえます。
STATUS 欄の Up の時間は、コンテナが起動してからの経過時間です。
ここで、xxx1 は、スリープのトリガーとなるために自発終了しますので、その時点で停止して、Up (running) 状態から Exited 状態になります。それをトリガーにして、ホスト OS がスリープします。
この時、コンテナも含め、全てのプロセスは動作が一時停止した状態となりますが、終了するわけではありません。従って、xxx2 と xxx3 は、Up のままです。
その後、起床要因によってスリープから復帰すると、power-utils.conf で TARGET に指定したコンテナ xxx1 は、atmark-power-utils サービスが podman_start を使って再生成・起動します。つまり、xxx1 の Up 時間は、スリープから復帰した時からの経過時間になるわけです。
>xxx2とxxx3もsleepしているという理解でよいでしょうか?起床しているということでしょうか?
はい。
上述したように、ホスト OS がスリープしますので、その上のプロセスも一時停止します。プロセスごとのスリープではなく、OS 全体のスリープです。xxx1 と xxx2, xxx3 の Up 時間の違いは、スリープ前に終了するかしないかの違いによるものです。
>または、xxx2とxxx3の両コンテナもSleepさせるには別の措置がいるのでしょうか?
いえ、不要です。
>質問2)
>マニュアルの「状態遷移トリガにコンテナ終了通知を利用する」にそって、xxx1.confの記載に
>コンテナの終了を検知するためのフック、「add_args --hooks-dir=/etc/containers/aiot_gw_container_hooks.d 」を加えていますが、
>コンテナのログを見ると、podman logs xxx1で確認すると、.confの該当のフックの行が「 add_args: not found」となっています。
>こちらのエラーはどうすればよいでしょうか?いまのところ、上で述べたようにxxx1についてSleep遷移はできています。
コンテナの起動設定ファイルに追加して頂いた内容は、それで合っています。
起動設定ファイルの add_args 行で指定した内容は、ABOS の podman_start コマンドが podman run を実行してコンテナを生成・起動する際に、pdoman run に渡す引数として使われます。
この様子は、podman_start コマンドを -v オプション付きで実行すると分かります:
podman logs xxx で表示されるのは、コンテナのプロセスのログ出力ですから、コンテナ起動設定ファイルの add_args 設定とは無関係だと思います。
「.confの該当のフックの行が」とおっしゃっているのは、podman logs xxx の出力kからどうやって判断なさったのでしょうか?