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