ブログ

Armadillo Base OSでのコンテナの使い方

at_shinya.matsumoto
2024年10月7日 8時10分

Armadillo Base OSでの基本的なコンテナの仕様について説明します。

コンテナの起動方法

コンテナはコンテナイメージから起動しますが、その際に一般的には下記の様なコマンドでコンテナを作成します。

コンテナ作成&起動例
[armadillo]# podman run --name=test \
--volume=/var/app/rollback/volumes/test:/vol_app \
--volume=/var/app/volumes/test:/vol_data \
--device=/dev/gpiochip5:/dev/gpiochip5 \
debian:bullseye-slim \
/bin/app.exe


《上記コマンドのオプションの説明》
 ※オプションの詳細説明は製品マニュアルを参照下さい。

 1行目:コンテナ名をtestに設定
 2行目:コンテナ内の/vol_appをOS側の/var/app/rollback/volumes/testにマウント(=アクセス権限を与える)
 3行目:コンテナ内の/vol_dataをOS側の/var/app/volumes/testにマウント(=アクセス権限を与える)
 4行目:コンテナ内の/dev/gpiochip5をOS側の/dev/gpiochip5にマウント(=アクセス権限を与える)
 5行目:使用するコンテナイメージをdebian:bullseye-slimに指定
 6行目:コンテナ起動時にコンテナ内で/bin/app.exeを実行(=アプリケーションの起動)

Armadillo Base OSでは上記の引数をコンテナのコンフィグファイル(※)として作成し、コンテナを起動します。
本書式はアットマークテクノ独自書式の為、詳細は製品マニュアルを参照下さい。
※VScodeではapp.conf、Armadillo Base OS上では/etc/atmark/containers/[コンテナ名].confを指します。

上記コマンドをapp.confで記載した場合

[armadillo]# cat /etc/atmark/containers/app.conf
#使用するコンテナイメージの指定
set_image localhost/debian:bullseye-slim

#コンテナ外とのファイル・ディレクトリ共有
add_volumes /var/app/rollback/volumes/test:/vol_app
add_volumes /var/app/volumes/test:/vol_data
add_devices /dev/gpiochip5:/dev/gpiochip5

#コンテナで実行するコマンド
set_command bash /vol_app/app.exe

上記の様に引数をapp.confで指定し、下記コマンドでコンテナを起動できます。
Armadillo起動時は自動で起動します。

コンフィグファイルでコンテナを作成&起動する例(.confは付けない)
[armadillo]# podman_start app

コンテナでのファイル保存について

Armadillo Base OSでは基本的にコンテナは読み取り専用で、RAM上に展開されます。
よって、コンテナの内部にファイルを作成した場合はRAM上に作成される為、電源OFFで消えてしまいます。

電源OFFにした後もファイルを残す場合はapp.confで指定しているeMMCに直接保存可能な /volumes ディレクトリを使用します。

app.confの/volumesのファイル・ディレクトリ共有設定(抜粋)

#コンテナ外とのファイル・ディレクトリ共有
add_volumes /var/app/rollback/volumes/app:/vol_app
add_volumes /var/app/volumes/app:/vol_data

例えば、1行目の add_volumes /var/app/rollback/volumes/app:/vol_app はコンテナで /vol_app
アクセスするとArmadillo Base OS上(コンテナ外)の /var/app/rollback/volumes/app にアクセス出来ます。

ロールバック時にデータを保持する/しないによって下記使い分けが可能です。
・/var/app/volumes
 コンテナのバージョンに影響しない場合等で、ロールバックの有無に関わらずファイルを保持する

・/var/app/rollback/volumes
 コンテナのバージョンに合わせる必要がある場合等で、ロールバック発生時ロールバック先の状態(前の状態)に戻る

コンテナの使い方の解説は以上となります。


開発手順・TIPS集のTOPに戻る