ブログ

Armadillo Base OS:コンテナの自動起動とconfファイルの説明(改訂版)

at_shinya.matsumoto
2022年6月14日 8時39分

本ブログは作成したコンテナを自動起動させる方法と、その設定に必要なconfファイルについて記載しております。
旧版の書式も使用出来ますが、基本的には改訂版の本ブログまたは製品マニュアルを参照ください。

はじめに

Armadillo-IoT G4はeMMC(ストレージ)への書き込みを最小限にする観点から、tmpfs(メモリ上に作成するファイルシステム)に保存する設定にしております。メモリ上のファイルは電源を一度落とすと消えてしまう為、開発時はeMMCへ書き込む様に下記の様に設定を変更します。

ファイルをeMMCへ保存に変更するコマンド
# abos-ctrl podman-storage --disk    (バージョン v3.15.4-at.6以降で対応)
または
# podman_switch_storage --disk

ファイルをtmpfs(メモリ)へ保存に変更するコマンド
# abos-ctrl podman-storage --tmpfs    (バージョン v3.15.4-at.6以降で対応)
または
# podman_switch_storage --tmpfs

ファイルの保存先設定を確認するコマンド(下記はeMMCへ保存する設定)
# abos-ctrl podman-storage --status    (バージョン v3.15.4-at.6以降で対応)
または
# podman_switch_storage --status
Currently in disk mode, run with --tmpfs to switch

以下、eMMCへ保存する事を前提で記載致します。

コンテナ自動起動の設定

今回使用するコンテナはArmadillo-IoT G4:USBカメラの画像をmjpg-streamerを使って、ネットワーク経由で
PCのWebブラウザで見る方法
で作成したコンテナを使用します。
下記の順に進めていきます。
1.作成したコンテナのイメージを作成
2.confファイルを作成
3.動作確認

1.作成したコンテナのイメージを作成

作成したコンテナ(本説明ではmjpg_stream)を元にイメージファイルを作成します。
ここではイメージ名をat_mjpg_stream、タグをv1.0.0と付けています。
(dockerfileでビルドしたイメージでも同じ動作する事が確認出来ていれば問題ありません)

コンテナからイメージファイルを作成
# podman commit mjpg_stream mjpg_stream:v1.0.0

作成したイメージファイルを確認
# podman images
REPOSITORY                     TAG         IMAGE ID      CREATED                 SIZE
docker.io/library/debian       bullseye    5852ca45f7bf  Less than a second ago  123 MB
localhost/at_mjpg_stream       v1.0.0      745f41934003  About a minute ago      726 MB   ←今回作成したイメージ

2.confファイルを作成

ホスト側の/etc/atmark/containers/ディレクトリ下に[コンテナ名].confという設定ファイルを作成します。
この設定ファイルによってArmadillo-IoT G4の起動時にファイル名と同名のコンテナを自動作成~起動します。
(同名のコンテナがある場合、上書きされます)

ここではコンテナ作成時とmjpg-streamer起動時の設定をconfファイルに記述します。
また、今回は自動起動のコンテナとイメージ作成元のコンテナを分ける為、名前をmjpg_stream_autoに変更します。
前回コンテナ作成のコマンドとmjpg-streamerのコマンドは下記になります。これをconfファイルの書式に直します。
(/dev/videoXについては環境によって変わりますので適宜調整下さい)

前回コンテナ作成時のコマンド
# podman run -it --name=mjpg_stream \
               --publish=9000:8080 \
               --device=/dev/video3:/dev/video3 \
               docker.io/debian:bullseye \
               /bin/bash

mjpg-streamer起動時のコマンド
# mjpg_streamer \
    -i "/usr/local/lib/mjpg-streamer/input_uvc.so --device /dev/video3 --yuv --resolution VGA --fps 30" \
    -o "/usr/local/lib/mjpg-streamer/output_http.so --www /usr/local/share/mjpg-streamer/www"

上記設定を元にvi等でmjpg_stream_auto.confファイルを作成します。

# cat /etc/atmark/containers/mjpg_stream_auto.conf
set_image localhost/at_mjpg_stream:v1.0.0
add_devices /dev/video3:/dev/video3
add_ports 9000:8080
set_command mjpg_streamer \
    -i "/usr/local/lib/mjpg-streamer/input_uvc.so --device /dev/video3 --yuv --resolution VGA --fps 30" \
    -o "/usr/local/lib/mjpg-streamer/output_http.so --www /usr/local/share/mjpg-streamer/www"

confファイルの書式については下記をご参照ください。

3.動作確認

動作確認の為、podman_startコマンドでコンテナを起動し、問題が無いか確認します。
STATUSがUpになっていればコンテナ起動中の状態です。

mjpg_stream_autoのコンテナを作成~起動
# podman_start mjpg_stream_auto

podman psコマンドで動作確認
# podman ps
CONTAINER ID  IMAGE                            COMMAND               CREATED             STATUS                 PORTS                   NAMES
c657985072a0  localhost/at_mjpg_stream:v1.0.0  mjpg_streamer -i ...  About a minute ago  Up About a minute ago  0.0.0.0:9000->8080/tcp  mjpg_stream_auto

コンテナ動作中に前回同様に他のPCブラウザ等からhttp://[Armadillo-Iot G4のIPアドレス]:9000/にアクセスし、
動作している事を確認します。問題無ければ、コンテナを停止し、作成したmjpg_stream_auto.confを永続化
(eMMCへ保存)します。

コンテナ停止
# podman stop mjpg_stream_auto

mjpg_stream_auto.confの永続化
# persist_file /etc/atmark/containers/mjpg_stream_auto.conf

上記完了後、Armadillo-IoT G4を再起動します。
再起動後、podman psコマンドで自動でmjpg_stream_autoコンテナが自動作成・動作している事、他のPCから
webブラウザでアクセスし、カメラの静止画やストリーミングが確認出来れば完了です。