Armadillo-640にはopensshがインストールされていますが、デフォルトではSSHサーバーが起動していません。
SSHサーバーを自動的に起動するようにするためには、以下のコマンドを実行してください。
[armadillo:~]# rc-update add sshd
* service sshd added to runlevel default
[armadillo ~]# persist_file /etc/runlevels/default/sshd
[ 2819.277066] EXT4-fs (mmcblk0p1): re-mounted. Opts: (null)
[armadillo ~]# reboot
上記の例では、再起動後も設定が反映されるように、 persist_file
コマンドでeMMCに設定を保存しています。
Armadillo BaseOS ではルートファイルシステムに overlayfs を採用しています。
その為、ファイルを変更した後 Armadillo の電源を切ると変更内容は保持されません。
開発中などに rootfs の変更内容を保持するには、変更したファイルに対して persist_file
コマンドを使用します。
persist_file
コマンドの詳細は 「overlayfs と persist_file について」 参照してください。
開発以外の時は安全のため、ソフトウェアアップデートによる更新を実行してください。
アップデート手順に関しては 「Armadilloのソフトウェアをアップデートする」 を参照してください。
rootfs の内容を変更しても、ソフトウェアアップデートを実施した際に変更した内容が保持されない可能性があります。
ソフトウェアアップデート実施後も変更内容を保持する手順に関しては 「swupdate_preserve_files について」 を参照してください。
8.1.3. PodmanのデータをeMMCに保存する
デフォルトでは、Podmanのデータはtmpfsに保存されます。そのため、Armadillo を再起動するとデータは消えてしまいます。
この挙動は、Armadilloの運用時を想定したものです。
eMMCへの書き込みを最小限にする等の観点から、 Armadilloの運用時は、 Podmanのデータはtmpfsに保存するのが適切です。
eMMCへの保存が必要な場合のみ SWUpdate または abos-ctrl で読み取り専用のイメージを保存します。
Armadillo開発時のみ、 eMMCにPodmanのデータが保存されるようにすることを推奨します。
eMMCにPodmanのデータが保存されるようにするには、以下のコマンドを実行します。
[armadillo ~]# abos-ctrl podman-storage --disk
Creating configuration for persistent container storage
Create subvolume '/mnt/containers_storage'
[ 2145.288677] EXT4-fs (mmcblk0p1): re-mounted. Opts: (null)
[armadillo ~]# abos-ctrl podman-storage --status
Currently in disk mode, run with --tmpfs to switch
| |
---|
podman のストレージはコンテナのイメージやランタイムのデータのみです。 コンテナのデータをボリュームに入れたら消えません。詳しくは 「コンテナの変更を保存する」 を参照してください。 |
ベースとなるOSを取得します。alpineやdebian等、任意の環境でアプリケーションを作成することができます。
ベースとなる OS はイメージの公開・共有サービスである Docker Hub
から取得することができます。目的に合わせて選択してください。
マルチメディアや機械学習を行うアプリケーションを作成する場合は、アットマークテクノが配布しているdebianコンテナがおすすめです。
開発中のアプリケーションがデバイスを利用する場合は、コンテナにデバイスを渡す必要があります。
podman_start
のコンテナコンフィグに add_devices
コマンドでデバイスファイルを指定します。詳細は 「コンテナの自動起動」 を参照ください。
| |
---|
--privileged オプションを指定するとすべてのセキュリティーメカニズムが無効になる為、全てのデバイスが利用できるようになります。このオプションを利用することは、セキュリティー上問題がある為、デバッグ用途でのみご利用ください。
|
ログやデータベース、自分のアプリケーションのデータを保存する場合にボリュームを使ってください。
実行中のコンテナイメージを保存するには podman commit
コマンドで保存してください。
詳しい手順は 「コンテナの変更を保存する」 を参考にしてください。
「コンテナの運用」を参考にしてください。
podman_start用の設定ファイル(/etc/atmark/containers/*.conf)を作成します。その後、 podman_start -a
コマンドを実行するか、armadilloを再起動してコンテナが自動起動することを確認してください。コンテナの自動起動に関する詳しい説明は「コンテナの自動起動」を参考にしてください。
まず、コンテナをコンテナレジストリに送るか、 podman save
コマンドを実行してアーカイブを作成します。
以下の例では ATDE に mkswu
のキーを作成して、
docker.ioのイメージをこのまま使います。
手順の詳しい説明やオプションは「Armadilloのソフトウェアをアップデートする」を参考にしてください。
[ATDE ~]$ sudo apt update && sudo apt install mkswu
[ATDE ~]$ mkswu --init
: (省略)
[ATDE ~]$ cd mkswu
[ATDE ~/mkswu]$ cp /usr/share/mkswu/examples/pull_container_nginx.desc .
[ATDE ~/mkswu]$ cp -r /usr/share/mkswu/examples/nginx_start .
[ATDE ~/mkswu]$ vi pull_container_nginx.desc
swdesc_option version=1
swdesc_pull_container "docker.io/nginx:alpine"
swdesc_files --extra-os nginx_start
[ATDE ~/mkswu]$ mkswu -o initial_setup_container.swu \
initial_setup.desc pull_container_nginx.desc
ここで作成した initial_setup_container.swu
ファイルを USB メモリに配置して、
Armadillo-640 に刺すとインストールされます。
インストールが終了して再起動すると docker.io/nginx:alpine
のコンテナを
起動します。
購入状態でSWUをインストールできるか確認をするために、ソフトウェアの初期化を行います。
「Armadilloのソフトウェアの初期化」を参照し、Armadillo Base OSを初期化してからアプリケーションをアップデートしてください。
アップデートを行う方法は以下の二通りです:
podman run
コマンドで、差分アップデートを行う
ここでは例として、アプリケーションのコンテナをmyimage:1、アップデート後をmyimage:2とします。
[armadillo ~]# podman run --name update myimage:1 sh -c "apk upgrade --no-cache"
[armadillo ~]# podman commit update myimage:2
[armadillo ~]# podman rm update
[armadillo ~]# podman_partial_image -b myimage:1 -o myimage2_update.tar myimage:2
出来上がった myimage2_update.tar
は普通のコンテナと同じように扱うことができます。 myimage:1
が存在しない場合はエラーとなります。
詳しいコンテナアップデートの手順は 「コンテナの自動作成やアップデート」 を参考にしてください。
繰り返し差分アップデートをすると、イメージサイズが大きくなってしまいます。ストレージ容量が不足する場合は、次に示す手順でコンテナを新しく構築してください。
コンテナを新しく構築する
ベースとなるコンテナをアップデートして、そのコンテナに自分のアプリケーションを入れます。
差分アップデートと異なり共有部分が無い為、コンテナ全体を送る必要があります。
自動的にイメージを作る方法は「コンテナの自動作成やアップデート」を参考にしてください。