.tar ファイルを使用して podman イメージを Armadillo-IoT G4 に入れる方法として、podman イメージをまるごと .tar ファイルにする方法と、podman イメージの差分のみを .tar ファイルにする方法が挙げられます。
podman イメージの差分のみを .tar ファイルにする方法のメリットとして、.tar ファイルの容量を小さくすることができます。デメリットとして、アップデートの元となる podman イメージが Armadillo-IoT G4 に入っている必要があります。
podman イメージの差分を .tar ファイルに変換するには podman_partial_image コマンドを使用します。
podman_partial_image コマンドの使い方を以下に示します。
[armadillo ~]# podman_partial_image -h Usage: /usr/bin/podman_partial_image [-b base [-b base...]] [-o out.tar] archive [archive..] base = image name recognizable by podman image inspect, to be removed from archive archive = image name recognizable by podman save By default intermediate copies are stored in /var/tmp, set TMPDIR to change that directory
以下に podman_partial_image の使用例を示します。
使用例では、docker.io/alpine の podman イメージを使用して、パッケージのアップデートを行い、新しい podman イメージとして保存します。
次に podman_partial_image を使用して、docker.io/alpine の podman イメージと新しい podman イメージの差分を .tar ファイルに変換します。
まず、docker.io/alpine の podman イメージを pull します。
[armadillo ~]# podman pull docker.io/alpine Trying to pull docker.io/library/alpine:latest... Getting image source signatures … … Writing manifest to image destination Storing signatures 6e30ab57aeeef1ebca8ac5a6ea05b5dd39d54990be94e7be18bb969a02d10a3f
update という名前のコンテナを作成し、コンテナのパッケージをアップデートします。
[armadillo ~]# podman run --name update docker.io/alpine sh -c "apk update && apk upgrade && apk cache --purge" fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/main/aarch64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/community/aarch64/APKINDEX.tar.gz v3.16.0-196-g143603d2cf [https://dl-cdn.alpinelinux.org/alpine/v3.16/main] v3.16.0-198-g97d821185e [https://dl-cdn.alpinelinux.org/alpine/v3.16/community] OK: 16881 distinct packages available (1/4) Upgrading alpine-baselayout-data (3.2.0-r20 -> 3.2.0-r22) (2/4) Upgrading busybox (1.35.0-r13 -> 1.35.0-r14) Executing busybox-1.35.0-r14.post-upgrade (3/4) Upgrading alpine-baselayout (3.2.0-r20 -> 3.2.0-r22) Executing alpine-baselayout-3.2.0-r22.pre-upgrade Executing alpine-baselayout-3.2.0-r22.post-upgrade (4/4) Upgrading ssl_client (1.35.0-r13 -> 1.35.0-r14) Executing busybox-1.35.0-r14.trigger OK: 5 MiB in 14 packages
update コンテナを alpine:next として commit します。
[armadillo ~]# podman commit update alpine:next Getting image source signatures … … … Writing manifest to image destination Storing signatures 56d842b048b539ead9fd3f54ee7dfd43dff52b4ac43caed3219e9e53db0d1fcf
podman イメージが作成されていることを確認します。
[armadillo ~]# podman images REPOSITORY TAG IMAGE ID CREATED SIZE localhost/alpine next 56d842b048b5 15 minutes ago 9.01 MB #commit されていることを確認 docker.io/library/alpine latest 6e30ab57aeee 4 weeks ago 5.56 MB
podman イメージの差分を alpine_next.tar という名前で保存します。
[armadillo ~]# podman_partial_image -b docker.io/alpine -o alpine_next.tar alpine:next [armadillo ~]# ls alpine_next.tar alpine_next.tar