Armadilloフォーラム

Raspberry Pi で動作しているコンテナを Armadillo で動作するための手順について

naka16

2025年4月11日 14時28分

==========
製品型番:AGX4520-C03D0
==========

お世話になっております。

Raspberry Pi で動作しておりますアプリ(コンテナ)を御社の Armadillo-IoT G4上で動作させたいと
考えております。

初歩的な質問となりまして恐縮ですが、手順等ご教授いただきたく、よろしくお願いします。

ドキュメントの参照箇所等のご提示でも構いませんので、お手数をおかけしますが、
よろしくお願いします。

コメント

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

naka16さん:
>==========
>製品型番:AGX4520-C03D0
>==========

>Raspberry Pi で動作しておりますアプリ(コンテナ)を御社の Armadillo-IoT G4上で動作させたいと
>考えております。

お使いの Raspberry Pi の型番は、何でしょうか?
おそらく aarch64 (ARM 64bit) の CPU コアの機種かとは思いますが、ご確認くださいませ。

>初歩的な質問となりまして恐縮ですが、手順等ご教授いただきたく、よろしくお願いします。
>
>ドキュメントの参照箇所等のご提示でも構いませんので、お手数をおかけしますが、
>よろしくお願いします。

互換性のある CPU コアのボード間でコンテナを持ち運ぶ場合、次の手順となります:

(1) 持ち運び元(今回の場合は Raspberry Pi)で、コンテナエンジン(Docker)の export コマンドか save コマンドを使い、コンテナイメージを tar アーカイブとして保存する。

(2) 持ち運び先(今回の場合は Armadillo-IoT G4)で、コンテナエンジン(podman)の import コマンドか load コマンドを使い、コンテナイメージを読み込む。

(3) 読み込んだコンテナイメージからコンテナを生成・起動する。

なお、持ち運ぶアプリケーションが、Raspberry Pi 固有のハードウェア(つまり、Raspberry 固有のデバイスドライバ)を使用している場合は、持ち運び先の Armadillo-IoT G4 では動作しません。エラーになってしまいます。
また、互換性のあるハードウェア(つまり、同じ名前のデバイスドライバ)を使用している場合であっても、上記 (3) でコンテナを作成する際に、デバイスドライバの使用許可をコンテナに与える設定が必要です。

(1) と (2) の、コンテナイメージ持ち運び用のコマンドについては、それぞれ以下をご覧ください:

・docker export
 https://docs.docker.jp/engine/reference/commandline/export.html
・docker save
 https://docs.docker.jp/engine/reference/commandline/save.html

・podman import
 https://docs.podman.io/en/stable/markdown/podman-import.1.html
・podman load
 https://docs.podman.io/en/stable/markdown/podman-load.1.html

docker export でコンテナイメージを書き出した場合は podman import で読み込み、docker save でコンテナイメージを保存した場合は podman load で読み込んでください。

以上、ひとまずコメントです。不明な点などありましたら、お知らせください。

> アットマークテクノの古賀です。
>
> naka16さん:
> >==========
> >製品型番:AGX4520-C03D0
> >==========
> …
> >Raspberry Pi で動作しておりますアプリ(コンテナ)を御社の Armadillo-IoT G4上で動作させたいと
> >考えております。
>
> お使いの Raspberry Pi の型番は、何でしょうか?
> おそらく aarch64 (ARM 64bit) の CPU コアの機種かとは思いますが、ご確認くださいませ。
>
> >初歩的な質問となりまして恐縮ですが、手順等ご教授いただきたく、よろしくお願いします。
> >
> >ドキュメントの参照箇所等のご提示でも構いませんので、お手数をおかけしますが、
> >よろしくお願いします。
>
> 互換性のある CPU コアのボード間でコンテナを持ち運ぶ場合、次の手順となります:
>
> (1) 持ち運び元(今回の場合は Raspberry Pi)で、コンテナエンジン(Docker)の export コマンドか save コマンドを使い、コンテナイメージを tar アーカイブとして保存する。
>
> (2) 持ち運び先(今回の場合は Armadillo-IoT G4)で、コンテナエンジン(podman)の import コマンドか load コマンドを使い、コンテナイメージを読み込む。
>
> (3) 読み込んだコンテナイメージからコンテナを生成・起動する。
>
> なお、持ち運ぶアプリケーションが、Raspberry Pi 固有のハードウェア(つまり、Raspberry 固有のデバイスドライバ)を使用している場合は、持ち運び先の Armadillo-IoT G4 では動作しません。エラーになってしまいます。
> また、互換性のあるハードウェア(つまり、同じ名前のデバイスドライバ)を使用している場合であっても、上記 (3) でコンテナを作成する際に、デバイスドライバの使用許可をコンテナに与える設定が必要です。
>
> (1) と (2) の、コンテナイメージ持ち運び用のコマンドについては、それぞれ以下をご覧ください:
>
> ・docker export
>  https://docs.docker.jp/engine/reference/commandline/export.html
> ・docker save
>  https://docs.docker.jp/engine/reference/commandline/save.html
>
> ・podman import
>  https://docs.podman.io/en/stable/markdown/podman-import.1.html
> ・podman load
>  https://docs.podman.io/en/stable/markdown/podman-load.1.html
>
> docker export でコンテナイメージを書き出した場合は podman import で読み込み、docker save でコンテナイメージを保存した場合は podman load で読み込んでください。
>
> 以上、ひとまずコメントです。不明な点などありましたら、お知らせください。

ご教授いただきましてありがとうございます。

> お使いの Raspberry Pi の型番は、何でしょうか?
Raspberry Pi 4 となります。

手順 (1) , (2) につきましては、無事に実行できましたが、(3) で以下のようなエラーが発生しております。

podman run --name blesensor switchbot:latest
Error: crun: open executable: Operation not permitted: OCI permission denied

対処法が分からず、お手数をおかけしまして申し訳ありませんが、ご教授のほど、よろしくお願いいたします。

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

naka16さん:
>>互換性のある CPU コアのボード間でコンテナを持ち運ぶ場合、次の手順となります:
>>
>>(1) 持ち運び元(今回の場合は Raspberry Pi)で、コンテナエンジン(Docker)の export コマンドか save コマンドを使い、コンテナイメージを tar アーカイブとして保存する。
>>
>>(2) 持ち運び先(今回の場合は Armadillo-IoT G4)で、コンテナエンジン(podman)の import コマンドか load コマンドを使い、コンテナイメージを読み込む。
>>
>>(3) 読み込んだコンテナイメージからコンテナを生成・起動する。
>>
>>なお、持ち運ぶアプリケーションが、Raspberry Pi 固有のハードウェア(つまり、Raspberry 固有のデバイスドライバ)を使用している場合は、持ち運び先の Armadillo-IoT G4 では動作しません。エラーになってしまいます。
>>また、互換性のあるハードウェア(つまり、同じ名前のデバイスドライバ)を使用している場合であっても、上記 (3) でコンテナを作成する際に、デバイスドライバの使用許可をコンテナに与える設定が必要です。

>ご教授いただきましてありがとうございます。
>
>>お使いの Raspberry Pi の型番は、何でしょうか?
>
>Raspberry Pi 4 となります。

了解しました。
追加で確認ですが、Raspberry Pi OS は 64bit 版をお使いでしょうか?

>手順 (1) , (2) につきましては、無事に実行できましたが、(3) で以下のようなエラーが発生しております。
>
>podman run --name blesensor switchbot:latest
>Error: crun: open executable: Operation not permitted: OCI permission denied
>
>対処法が分からず、お手数をおかけしまして申し訳ありませんが、ご教授のほど、よろしくお願いいたします。

コンテナ起動時に実行するプログラムを実行できないかまたは、実行するプログラムが指定されていない状況だと思われます。
お使いのコンテナアプリケーションですが、コンテナ起動時に実行するプログラムは何でしょうか?

お使いのコンテナアプリケーションのコンテナイメージを Dockerfile から生成していらした場合は、Dockerfile の CMD または ENTRYPOINT で指定していらしたコマンドを教えてくださいませ。

Dcokerfile が手元にない場合は、Raspberry Pi で docker inspect コマンドを使って調べてみてくださいませ:

docker inspect -f "{{ .Config.Cmd  }}" [コンテナイメージ名]
docker inspect -f "{{ .Config.Entrypoint  }}" [コンテナイメージ名]

おそらく、docker export と podman import をお使いになったのだと思います。
docker save と podman load を使えば、コンテナイメージのメタデータも持ち運べますので、そちらをお使いになる方が手っ取り早いかも知れません。