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