ブログ

Armadillo Base OS:コンテナの遅延起動

at_shinya.matsumoto
2023年3月2日 11時10分

本ブログはArmadillo Base OSでコンテナを自動起動させる場合に、起動を遅らせる方法を紹介します。
主な用途として、他のデバイスの接続(認識)待ちなどでコンテナの起動を遅らせたい場合を想定しています。
コンテナの立ち上げを遅らせる分、Armadilloの起動完了までの時間が長くなりますのでご注意願います。

実施手順

下記の順に実施します。 ※自動起動するコンテナは開発が完了している前提とします。

1.コンテナ自動起動用コンフィグファイル作成
2.起動待機用のスクリプトを作成
3.動作確認

以下、「何もしないコンテナ」を開発完了後のコンテナと見立てて説明します。

1.コンテナ自動起動用コンフィグファイル作成

Armadilloが立ち上がった時にコンテナ(アプリケーション)を自動起動するには、自動起動用のコンフィグファイルを 用います。コンフィグファイルは”/etc/atmark/containers/”に下記の様に作成します。 ※最終行以外の内容はお客様の使用条件に応じて変更下さい。

コンテナ”hoge”のコンフィグファイルを作成
# vi /etc/atmark/containers/hoge.conf   //"~.conf"の"~"がコンテナ名になる
-------------
set_image alpine:latest
set_command sleep infinity
set_autostart no                                  //←この一文を追加:自動起動しない設定とする
-------------

コンフィグファイルを永続化
# persist_file /etc/atmark/containers/hoge.conf

2.起動待機用のスクリプトを作成

次に”/etc/local.d/”に自動起動する条件を書いたスクリプトを作成します。

スクリプト”hoge.start”を作成
# vi /etc/local.d/hoge.start
-------------
#!/bin/sh

//コンテナ起動する条件を記載(タイムアウト等の処理も含めると良いと思います)
sleep 10           //ここでは分かりやすい簡易的な例として10秒待ってから起動とする
podman_start hoge    //コンテナhogeを起動
-------------

本ファイルに実行権限付与
# chmod +x /etc/local.d/hoge.start

本ファイルを永続化
# persist_file /etc/local.d/hoge.start

3.動作確認

自動実行前にスクリプトが正常に動作するか確認します。

# /etc/local.d/hoge.start
コンテナの動作確認
# podman ps
CONTAINER ID  IMAGE                            COMMAND         CREATED         STATUS             PORTS       NAMES
3e9b0fdde90a  docker.io/library/alpine:latest  sleep infinity  13 seconds ago  Up 11 seconds ago              hoge

スクリプトが動作していれば以上で設定が完了です。
最後にrebootを実行して自動起動しているか確認します。

再起動
# reboot

ログイン後、動作コンテナの確認
# podman images
CONTAINER ID  IMAGE                            COMMAND         CREATED        STATUS            PORTS       NAMES
dff09d0e39bf  docker.io/library/alpine:latest  sleep infinity  10 seconds ago  Up 8 seconds ago              hoge