本ブログは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コマンドの引数には、実際のデバイスやディレクトリ、ポートフォワーディング等を追加します。