ブログ

Armadillo-IoT G4:コンテナの自動起動とconfファイルの説明

at_shinya.matsumoto
2022年1月13日 8時48分

本ブログは作成したコンテナを自動起動させる方法と、その設定に必要なconfファイルについて記載しております。

はじめに

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

ファイルをeMMCへ保存に変更するコマンド
# podman_switch_storage --disk
 
ファイルをtmpfs(メモリ)へ保存に変更するコマンド
# podman_switch_storage --tmpfs
 
ファイルの保存先設定を確認するコマンド(下記はeMMCへ保存する設定)
# 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に変更します。

前回コンテナ作成時のコマンド
# 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
image="localhost/at_mjpg_stream:v1.0.0"
devices="/dev/video3:/dev/video3"
readonly=false
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ブラウザでアクセスし、カメラの静止画やストリーミングが確認出来れば完了です。