Armadilloフォーラム

podmanを使用したコンテナイメージのインストールについて

akinori_h

2025年1月24日 16時42分

==========
製品型番:Armadillo-IoT Gateway A6E
Debian/ABOSバージョン:3.20.3-at.4-node-red
カーネルバージョン:5.10.230-1-at on an armv7
3G/LTE モジュール情報 (Debianのみ):
その他:
==========

お世話になります。
標記の件についてご質問です。

現在、A6Eを利用してIoTデバイスを開発しており、以下の構成でコンテナアプリケーションを実装したいと考えております。

Node-RED:Modbus TCP通信にてスレイブのデバイスのデータを取得しDBに挿入・DBから作成したオブジェクトをクラウド(Azure)のエンドポイントへ送信
influxDB:Node-REDで取得したデータを保存
Home Assitant:DBへ接続しLAN環境下の別のデバイスよりアクセスするモニター(ダッシュボード)として使用

Node-REDにてModbusノードを使用しデータを取得するフローの作成が出来たため、
influxDBのコンテナを作成するためにシリアルコンソールから接続し、podmanを使用してdocker hubより
arm32 v7に対応したinfluxDBのイメージをpullしたいのですがエラーにより失敗する状況です。

実行時のコマンドとエラーは下記の通りとなります。

armadillo:~# podman pull docker.io/arm32v7/influxdb

Error: writing blob: adding layer with blob "sha256:aae60b5ed65c5d76acc7c0baf6fe0549a03f324c20d1882c25d60b44aaacaeba"/""/"sha256:4614a32470a6c1737ce72ca271c911015fd49f2ac809a7594fcdc0beb56f43e8": unpacking failed (error: exit status 1; output: write /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.1: no space left on device)

現状、インストールディスクを使ってセットアップした状況から特にストレージは使っておらず、
Node-REDのコンテナが704MB使っているだけなのでeMMCの空き容量は問題ないと思われます。
何か対処方法があればご教授ください。

また、上記の構成を実現するために他におすすめの方法があればお教え頂けると幸いです。

コンテナを使用した開発は初めてでお手数をおかけするかと思いますが、何卒よろしくお願いいたします。

コメント

アットマークテクノの古賀です。

akinori_hさん:
>現在、A6Eを利用してIoTデバイスを開発しており、以下の構成でコンテナアプリケーションを実装したいと考えております。
...
>Node-REDにてModbusノードを使用しデータを取得するフローの作成が出来たため、
>influxDBのコンテナを作成するためにシリアルコンソールから接続し、podmanを使用してdocker hubより
>arm32 v7に対応したinfluxDBのイメージをpullしたいのですがエラーにより失敗する状況です。
>
>実行時のコマンドとエラーは下記の通りとなります。
>
>armadillo:~# podman pull docker.io/arm32v7/influxdb
>
>Error: writing blob: adding layer with blob "sha256:aae60b5ed65c5d76acc7c0baf6fe0549a03f324c20d1882c25d60b44aaacaeba"/""/"sha256:4614a32470a6c1737ce72ca271c911015fd49f2ac809a7594fcdc0beb56f43e8": unpacking failed (error: exit status 1; output: write /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.1: no space left on device)
>
>現状、インストールディスクを使ってセットアップした状況から特にストレージは使っておらず、
>Node-REDのコンテナが704MB使っているだけなのでeMMCの空き容量は問題ないと思われます。
>何か対処方法があればご教授ください。

これは、eMMC の空き容量ではなく、RAM 上のファイルシステム(tmpfs)の空き容量が不足したことによるエラーなのです。
マニュアルの「イメージからコンテナを作成する」の節にある注意書きに記載しているのですが、podman pull で取得するコンテナイメージは、デフォルトでは、メモリ上(tmpfs)に保存されます:
 https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…
そのため、コンテナイメージが大きいと、コンテナイメージのロード中に tmpfs が途中で満杯になってしまい、エラーしてしまうのです。
これを防ぐには、注意書きにも記載しているように、 'abos-ctrl podman-storage --disk' を実行して podman のストレージを eMMC に切り替えてください。
コンテナイメージをロードできたら、 'abos-ctrl podman-storage --tmpfs' で元に戻してください。

たとえば、次の Howto の手順でも、大きなコンテナイメージをロードする時に、abos-ctrolpodma-storage コマンドを使い、podman のストレージをロード前後で切り替えています:
 https://armadillo.atmark-techno.com/howto/a640_matter_over_thread

>Node-RED:Modbus TCP通信にてスレイブのデバイスのデータを取得しDBに挿入・DBから作成したオブジェクトをクラウド(Azure)のエンドポイントへ送信
>influxDB:Node-REDで取得したデータを保存
>Home Assitant:DBへ接続しLAN環境下の別のデバイスよりアクセスするモニター(ダッシュボード)として使用
...
>また、上記の構成を実現するために他におすすめの方法があればお教え頂けると幸いです。

Node-RED、influxDB、Home Assistantを、それぞれコンテナで動かす、ということですよね。
Node-RED のノードや Home Assistant のプラグインからの DB アクセスは、influxDB の HTTP API で行なうことにより、DB ファイルを共有しない形でコンテナ同士を疎結合する、という構成でお考えなのだと思います。

Home Assistant を Armadillo で動かしたことがありませんので、あまりお役に立てないのですが、influxDB については、以下の質問スレッドが参考になるかも知れません:
 https://armadillo.atmark-techno.com/forum/armadillo/19314