Armadillo Base OSで、コンテナ間をネットワーク通信する一例です。
この例では、簡易的に下記のようなコンテナ間のネットワーク通信を行ってみます。
example1コンテナ:コンテナ内でWebサーバーを起動し、テキストファイルを置きます。
client1コンテナ:「example1」コンテナ内のWebサーバーからテキストファイルの内容を読み込みます。
手順1. Webサーバーが動くコンテナ「example1」の作成、動作確認
下記ブログを参考に動作確認までしておきます。
Armadillo Base OS:Webサーバー(lighttpd)が動くコンテナを作成(ABOSDEで作成)
example1コンテナ上のWebサーバーに、5秒毎にdateコマンドの実行結果の
テキストファイル(sample_log.txt)が作成されている状態になってます。
手順2. Webサーバーからコンテンツを読み込むコンテナ「client1」を作成
下記ブログの手順で「client1」コンテナを作成していきます。
Armadillo Base OS:アプリケーションの作り方
以下、上記ブログの内容について、ここでの「client1」コンテナ作成時の補足のみ記述します。
1.プロジェクト作成
プロジェクト名は「client1」とし、「Shell New Project」でプロジェクト作成します。
以降、上記ブログ内「example1」の表記は「client1」に読み替えてください。
2.SSH接続設定を行う(任意)
当該ブログでは「任意」となってますが、ここでは、SSH接続で動作確認するため、
この箇所は実施します。
3.アプリケーションコンテナ作成
プロジェクトの記述(下記、赤枠アイコンで展開した赤線のファイル)を書き換えます。
Dockerfile
このファイルの全体を下記の内容に書き換え、Alpine Linuxコンテナを作成するようにします。
(動作確認には簡単なスクリプトを実行するだけなので、軽量なAlpine Linux用に設定します。)
ARG ARCH
FROM docker.io/${ARCH}/alpine:latest
LABEL version="2.0.0"
# Add apt download source information
COPY resources/etc/apt /etc/apt/
ARG PACKAGES
RUN apk update && apk upgrade \
&& apk add ${PACKAGES} \
&& apk cache clean
ARG PRODUCT
COPY resources [r]esources_${PRODUCT} /
packages.txt
このファイルの全体を下記の内容に書き換えます。
デフォルトで記述されている「bash」に加え、ネットワーク通信確認に「curl」パッケージを含めています。
bash
curl
main.sh
1秒毎に「example1」コンテナのWebサーバー(※)のsample_log.txtをcurlコマンドで読み込みます。
※)手順1内で編集しているapp.confにて、「example1」のWebサーバーで使用する「80ポート」へのアクセスが
許可されています。
curlコマンドでは、「コンテナ名」:[ポート番号]/[ファイル名]の書式で、
「example1」「80ポート」「sample_log.txt」を読み込んでいます。
#!/bin/bash
while :
do
curl example1:80/sample_log.txt
sleep 1
done
以上のプロジェクトの編集が完了したら、ビルドしてArmadilloに書き込みます。
Armadillo Base OS:アプリケーションの作り方の
4.コンテナのビルド
「Generate development swu」を実行します。
5.アップデートでSWUファイル書き込み
を実施します。
上記により書き込みが終了すると、自動的に再起動して、「client1」コンテナが起動している状態になります。
手順3. 「example1」「client1」間のネットワーク通信確認
手順1、手順2により「example1」「client1」コンテナが起動してます。
example1:5秒毎にdateコマンドの結果をWebサーバー上のsample_log.txtに書き込みます
client1:1秒毎に「example1」のネットワーク(80ポート)経由でsample_log.txtを読み込みます。
ここでは、上記の動作確認方法として、「client1」コンテナにSSH接続し、コンテナ内の標準出力のログで確認します。
Armadillo Base OS:アプリケーションの作り方「6.デバッグ実行(任意)」の方法で動作確認してみます。
「client1」プロジェクトが開いている状態(手順2の直後のまま)で、
6.デバッグ実行(任意)
に記載の通り、下記を実行します。
1.App stop on Armadillo でコンテナを停止
2.App run on Armadillo でコンテナを起動
App run on Armadillo を実行するとVScodeのコンソールにログが表示されるようになります。
「example1」コンテナ内で日付が5秒毎に更新されているsample_log.txtを
「client1」コンテナから1秒毎に読み出していることが、ログに表示される時刻の更新タイミングで確認できます。