ブログ

Armadillo Base OS:コンテナ間をネットワーク通信する例

at_kazutaka.bito
2025年4月10日 11時25分

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秒毎に読み出していることが、ログに表示される時刻の更新タイミングで確認できます。