ブログ

Armadillo Base OS:ATDEでArmadillo-IoT G4用のコンテナを作成する

at_shinya.matsumoto
2022年3月30日 8時43分

本ブログはArmadillo-IoT G4(以下、G4)を直接ネットワークに接続できない理由がある場合に、ネットワーク接続が
可能なATDE環境上でコンテナを作成してG4にコンテナをロードする方法を説明します。
(Armadillo Base OS製品が対象)

はじめに

ATDE環境を用いて作成する為、ATDE環境の準備が完了したものとして記載しています。
ATDE環境については マニュアルを参照ください。

G4用コンテナの作成手順

コンテナの作成手順は下記の順に行います。
()内はATDE、G4どちらの環境で実行するかを記載しています。

1.podmanのインストール(ATDE)
2.コンテナイメージの取得(ATDE)
3.仮のコンテナ作成~保存(ATDE)
4.Armadillo-IoT G4にコンテナを配置(G4)

1.podmanのインストール(ATDE)

まずはコンテナを作成する為、podmanをインストールします。
既にインストール済みの場合は次に進んでください。

podmanをインストール
# sudo apt update
# sudo apt install podman

2.コンテナイメージの取得(ATDE)

Docker Hubからコンテナイメージを取得します。
今回はdebianのbullseyeを取得したいと思います。

まず、G4のアーキテクチャに対応しているかを確認します。(大抵のイメージには対応しています)
Docker HubからDebianのbullseyeを探し、G4のアーキテクチャであるlinux/arm64/v8に対応した
コンテナイメージがある事を確認します。

上記より、Armadillo-IoT G4のアーキテクチャに対応している事を確認しましたので、このコンテナイメージを
取得します。ただし、特に指定なくpodman pullコマンドを使うと、現在の環境に合わせたコンテナイメージが
ダウンロードされてしまう為、下記の様に指定します。

podman pullコマンドにarm64v8を指定して実行
# podman pull docker.io/arm64v8/debian:bullseye

取得したイメージの確認
# podman images
REPOSITORY                 TAG       IMAGE ID      CREATED       SIZE
docker.io/arm64v8/debian   bullseye  05e8051d05a2  24 hours ago  123 MB

以上で、arm64v8のdebian:bullseyeのコンテナイメージを取得できました。

3.仮のコンテナ作成~保存(ATDE)

ダウンロードしたコンテナイメージを使ってコンテナを作成しますが、ATDE環境とG4ではデバイスやディレクトリが
同じではない為、ここではデバイス指定やボリューム指定は基本的に不要です。コンテナ内にファイルをコピーしたい
場合は、仮の設定としてディレクトリやUSBメモリをマウントしても問題ありません。
(G4へコンテナイメージをロードした後で、別途デバイスやボリューム指定等を行います)

ここでは下記コマンドでコンテナ"test_container"を作成します。(名前は任意)

コンテナを作成(コマンド実行後コンテナ内に入る)
# podman run -it --name=test_container docker.io/arm64v8/debian:bullseye /bin/bash

コンテナ内でapt updateした後で各種パッケージをインストール(下記は例)
# apt update
# apt install python3 vim

コンテナから抜ける
# exit

次に、パッケージをインストールしたコンテナをコンテナイメージとして保存します。
ここではコンテナ”test_container”をコンテナイメージ”test_image:v1.0.0"としています。(名前は任意)

コンテナをコンテナイメージに保存
# podman commit test_container test_image:v1.0.0
# podman images
REPOSITORY                 TAG       IMAGE ID      CREATED             SIZE
localhost/test_image       v1.0.0    a70eaa43bb31  About a minute ago  573 MB

続いて保存したコンテナイメージをアーカイブファイル"test_image.tar"に保存します。(名前は任意)
保存したアーカイブファイルをUSBメモリかSDカードに保存します。

USBメモリ等をマウント
# sudo mount /dev/sdb1 /mnt  (※sdb1は環境に合わせて適宜変更)

コンテナイメージをアーカイブファイルとしてUSBメモリ等に保存
# podman save -o /mnt/test_image.tar test_image:v1.0.0

USBメモリ等をマウント解除
# sudo umount /mnt

4.Armadillo-IoT G4にコンテナを配置(G4)

まず、G4をeMMCに保存する設定に変更します。

eMMCへ保存する設定に変更
# podman_switch_storage --disk

eMMCへ保存する設定になりましたら、USBメモリ等に保存したコンテナイメージのアーカイブファイルを、
G4でロードします。
注意:パーティションの容量の都合上G4にはコピーはせず、USBメモリ等から直接ロードしてください。
   G4でコンテナイメージをアーカイブファイル保存する場合も直接USBメモリ等に保存してください。

G4でUSBメモリ等をマウント
# mount /dev/sda1 /mnt  (※sda1は環境に合わせて適宜変更)

G4でUSBメモリからロード
# podman load -i /mnt/test_image.tar

# podman images 
REPOSITORY                 TAG       IMAGE ID      CREATED             SIZE
localhost/test_image       v1.0.0    a70eaa43bb31  About a minute ago  573 MB

G4でUSBメモリ等をマウント解除
# umount /mnt

最後に、ロードしたイメージを元にコンテナを作成すれば完了です。
podman runコマンドの引数には、実際のデバイスやディレクトリ、ポートフォワーディング等を追加します。