kirihara
2025年1月14日 10時03分
swuファイルにて、swuアップデートを実行する際に、コンテナイメージを停止したいです。
(コンテナ上のアプリにて、定期的に不揮発領域へとバックアップ処理を実行しています。swuアップデート実行中は当該バックアップ処理を停止したいです。)
.descファイル上で、以下のようにコンテナを停止するコマンドを実行すればよいのかと思ったのですが、
を追記したのですが、成功しませんでした。
swdesc_command --extra-os 'podman stop app_cnt'
ご知見をいただけますでしょうか。
よろしくお願いいたします。
==========
製品型番:AG6221
Debian/ABOSバージョン:base_os 3.19.1-at.4
カーネルバージョン:
3G/LTE モジュール情報 (Debianのみ):
その他:
==========
コメント
kirihara
at_dominique.m…
2025年1月14日 10時39分
kiriharaさん
お世話になっています、
マルティネです。
> swuファイルにて、swuアップデートを実行する際に、コンテナイメージを停止したいです。
> (コンテナ上のアプリにて、定期的に不揮発領域へとバックアップ処理を実行しています。swuアップデート実行中は当該バックアップ処理を停止したいです。)
説明までありがとうございます。
了解しました。
> .descファイル上で、以下のようにコンテナを停止するコマンドを実行すればよいのかと思ったのですが、
> を追記したのですが、成功しませんでした。
>
はい、こちらのコマンドで失敗しますね。
swdesc_command を実行する際に、「インストール先」の環境でコマンドを実行していますので、コンテナの処理はできません。
代わりに「swdesc_command_nochroot」でしたら「ホスト側」で実行していますので、コンテナを停止することは可能ですが、何かの理由でアップデートが失敗したらコンテナを停止したままになってしまいますので、方法としてはあまり推奨できません。
ただいま思いついた対処方法ですが、いくつかのやり方があると思います:
① NOTIFY_STARTING_CMD/NOTIFY_SUCCESS_CMD/NOTIFY_FAIL_CMD で podman stop app_cnt/(再起動の場合は不要)/podman_start app_cnt を指定します。Armadillo IoT A6E の場合はそちらのコマンドで LED を制御していますが、任意なコマンドで利用できますので、コンテナ停止・スタートでも可能です。(swdesc_option で指定する場合は /etc/atmark/baseos.conf に設定されているコマンドが無視されます)
参照: https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…
② 今回はバックアップ中にアップデートを行いたくないだけでしたら、そのバックアップ中でもアップデートできるようにしてもいいかもしれません。バックアップを一時的なファイルに保存して最後に mv 等でリネームするだけのであれば、バックアップ中のアップデートで古いファイルがまだ安全に使える状態ですのでその問題を回避できます。
(ただし、バックアップ中に snapshot を取ると書き込み中の容量も消費されてしまいますので、それで考えたらコンテナ停止か何かの通知でバックアップ禁止にした方がいいですね…)
よろしくお願いします。