Armadilloフォーラム

[Armadillo-610] コンテナ内にファイルをコピーできない

shun

2025年7月17日 10時03分

==========
製品型番:Armadillo-610
Debian/ABOSバージョン:3.19.2-at.5
カーネルバージョン:5.10.220
==========
お世話になっております。
コンテナへコピーするファイルを[container/resources]に入れて.swuファイルをインストールしたのですが、ファイルが反映されていませんでした。

[ATDE側]
.../container/resources/var/tmp/XXX/... ←container/resources下に/var/tmp/XXX...というファイルを追加
 
[Armadillo側]
armadillo:~# cd /var/
armadillo:/var# ls -l
total 9
drwxr-xr-x    4 root     root          1024 Jul  8  2024 app
drwxr-xr-x    2 root     root           512 Jan  1  1970 at-log
drwxr-xr-x    4 root     root          1024 Jun 25  2024 cache
dr-xr-xr-x    2 root     root          1024 Jun 25  2024 empty
drwxr-xr-x    1 root     root           100 Jul  8  2024 lib
drwxr-xr-x    2 root     root          1024 Jun 25  2024 local
lrwxrwxrwx    1 root     root             9 Jul 16 18:06 lock -> /run/lock
drwxr-xr-x    4 root     root          1024 Jul 16 02:04 log
drwxr-xr-x    2 root     root          1024 Jun 25  2024 mail
drwxr-xr-x    2 root     root          1024 Jun 25  2024 opt
lrwxrwxrwx    1 root     root             4 Jul 16 18:03 run -> /run
drwxr-xr-x    3 root     root          1024 Jun 25  2024 spool
drwxrwxrwt    1 root     root             0 Jul 16 18:06 tmp
armadillo:/var# cd ./tmp
armadillo:/var/tmp# ls -l
total 0
armadillo:/var/tmp#

また、app.conf内には以下のような記述をしています。

set_image localhost/{{PROJECT}}:latest
 
# mount app sources and data:
# - relative paths are in /var/app/rollback/volumes and can be
# rolled back on failed upgrades, suitable for application sources
# and assets.
# - /var/app/volumes is not copied on updates and more suitable
# for volatile data such as logs and databases.
add_volumes {{PROJECT}}:/vol_app
add_volumes /var/app/volumes/{{PROJECT}}:/vol_data
 
add_devices /dev/ttyACM0
add_devices /dev/ttymxc3
# Allow LED to be written. This is application specific
# and should be changed depending on your needs.
add_volumes /sys:/sys
add_volumes /var/tmp:/var/tmp
add_volumes /usr/bin:/usr/bin
 
# launch app
set_command /vol_app/build/Initialize

.swuインストール後にABOS DE内の[OPEN PROJECT→Initialize→container]内にコピーしたいファイルがあることは確認しました。※添付画像

お忙しいところ恐縮ですがご回答の程よろしくお願いいたします。

ファイル ファイルの説明
Armadillo.png
コメント

at_shota.shimoyama

2025年7月17日 10時59分

アットマークテクノの下山です。

app.confにはadd_volumes /var/tmp:/var/tmpがあり、コンテナ内の/var/tmpにはファイルがあるはずなのに、ABOS側では/var/tmpにファイルが見えないということですね

こちらでもArmadillo-610&同じABOSバージョンで最小限のコンテナの構成で試してみましたが再現できませんでした…

ひとまず、/etc/atmark/containers/に[プロジェクト名].confファイルがあるはずです(ABOSDEでのapp.confと同じ内容)ので、
その中身を添付いただけますでしょうか?↓

armadillo:~# cat /etc/atmark/containers/[プロジェクト名].conf

また、コンテナ内に入って、/var/tmp以下にファイルがあるかどうかも直接ご確認ください↓

armadillo:~# podman exec -ti [プロジェクト名] sh
/ # ls /var/tmp

よろしくお願いします。

お世話になっております。
下記に情報を添付します。

●initialize.conf

armadillo:~# cat /etc/atmark/containers/initialize.conf
set_image localhost/initialize:latest
 
# mount app sources and data:
# - relative paths are in /var/app/rollback/volumes and can be
# rolled back on failed upgrades, suitable for application sources
# and assets.
# - /var/app/volumes is not copied on updates and more suitable
# for volatile data such as logs and databases.
add_volumes initialize:/vol_app
add_volumes /var/app/volumes/initialize:/vol_data
 
add_devices /dev/ttyACM0
add_devices /dev/ttymxc3
# Allow LED to be written. This is application specific
# and should be changed depending on your needs.
add_volumes /sys:/sys
add_volumes /var/tmp:/var/tmp
add_volumes /usr/bin:/usr/bin
 
# launch app
set_command /vol_app/build/Initialize
armadillo:~#

●コンテナ内の/var/tmpの中身

armadillo:~# podman exec -ti initialize sh
# ls
bin   dev  home  media  opt   root  sbin  sys   tmp  var      vol_data
boot  etc  lib   mnt    proc  run   srv   test  usr  vol_app
# ls /var
backups  cache  lib  local  lock  log  mail  opt  run  spool  tmp
# ls -l /var
total 8
drwxr-xr-x 1 root root   0 Aug 14  2024 backups
drwxr-xr-x 1 root root  36 Jun 30 06:08 cache
drwxr-xr-x 1 root root  14 Jun 30 06:07 lib
drwxrwsr-x 1 root staff  0 Aug 14  2024 local
lrwxrwxrwx 1 root root   9 Apr  7 00:00 lock -> /run/lock
drwxr-xr-x 1 root root  28 Jul 17 02:25 log
drwxrwsr-x 1 root mail   0 Apr  7 00:00 mail
drwxr-xr-x 1 root root   0 Apr  7 00:00 opt
lrwxrwxrwx 1 root root   4 Apr  7 00:00 run -> /run
drwxr-xr-x 1 root root   8 Apr  7 00:00 spool
drwxrwxrwt 1 root root   0 Jul 17 02:38 tmp
# ls -l /var/tmp
total 0
# exit
armadillo:~#

以上です。よろしくお願いいたします。

at_shota.shimoyama

2025年7月17日 15時59分

shun 様

すみません、私の理解が不足しておりました。

まず、add_volumes /var/tmp:/var/tmp がある状態では、コンテナ起動後に/var/tmp内のファイルが見られないのは正常な挙動です
これは、add_volumes /var/tmp:/var/tmp をするとコンテナイメージ内の/var/tmpではなくABOS側の/var/tmpを参照するからです
そのため、元々何のファイルも無かったABOS側の/var/tmpを参照することになり、コンテナ内から/var/tmpをlsしても何も表示されません
(コンテナ起動後に/var/tmpにファイルを作成したりすることは可能です)

コンテナ起動時にABOS側に見せる(add_volumes)必要があるものはコンテナイメージの中に含めることはできませんので、
ABOS側に直接配置するか、コンテナ起動後にadd_volumesしているディレクトリにファイル等をコピーする必要があります

ABOS側に直接配置する場合にはABOSDEの/app/buildに置くと、バイナリと一緒にABOS側に転送されるのですぐに試せるかと思いますが、差し支えなければ/var/tmpに置いておきたかった理由などをお聞きしてもよろしいでしょうか?

お世話になっております。
/var/tmpに置きたい理由といたしましては、以前弊社で"Armadillo-480m"を使用した製品があったのですが、"Armadillo-480m"製造終了に伴い"Armadillo-610"へのソフトウェア移植をしたいと考えております。従来製品はDebian系のOSで/var/tmp下のファイルや/usr/bin下のファイルなどを使用して開発をしていたので、ルートファイルシステムは極力変更しないようにして移植作業を行いたいと考えていたためです。

/var/tmp/usr/binなどのルートファイルはコンテナ上ではなく、ABOS本体に書き込んでコンテナ内に参照する(add_volumes /var/tmp:/var/tmp)方法が適切なのでしょうか?

以上、よろしくお願いいたします。

at_shota.shimoyama

2025年7月17日 17時02分

> /var/tmpに置きたい理由といたしましては、以前弊社で"Armadillo-480m"を使用した製品があったのですが、"Armadillo-480m"製造終了に伴い"Armadillo-610"へのソフトウェア移植をしたいと考えております。従来製品はDebian系のOSで/var/tmp下のファイルや/usr/bin下のファイルなどを使用して開発をしていたので、ルートファイルシステムは極力変更しないようにして移植作業を行いたいと考えていたためです。
> /var/tmp/usr/binなどのルートファイルはコンテナ上ではなく、ABOS本体に書き込んでコンテナ内に参照する(add_volumes /var/tmp:/var/tmp)方法が適切なのでしょうか?

詳細にご説明いただきありがとうございます。

ABOS側の/var/tmpをコンテナ側の/var/tmpにマウントしたい場合(add_volumes /var/tmp:/var/tmp)はABOS側の/var/tmpにあらかじめ転送しておくか、コンテナイメージ内に保存されたファイルをコンテナ起動後に/var/tmpにコピーする必要がありますが、
そもそもABOS側の/var/tmpをコンテナ側の/var/tmpにマウントする必要がない場合には、コンテナ内の/var/tmpにファイルをそのまま置いておけます。(実際、app.confからadd_volumes /var/tmp:/var/tmpを外すと、コンテナ内では/var/tmpにファイルを確認できるはずです)

ABOS側/var/tmpをコンテナ側/var/tmpにマウントしたい理由などはございますでしょうか?

よろしくお願いします