4.8. マルチアーキテクチャーイメージのビルド
podman build --platform
コマンドを使用すると、マルチアーキテクチャーコンテナーイメージを作成できます。コンテナーイメージは、通常 x86 や ARM などの特定のアーキテクチャー用にビルドされます。ハードウェアの多様性とクラウドプラットフォームの拡大に伴い、マルチアーキテクチャーのサポートが不可欠となり、同じイメージをさまざまなアーキテクチャーにデプロイできるようになりました。
前提条件
-
container-tools
モジュールがインストールされている。
手順
-
サポートする必要がある各アーキテクチャーの
Containerfiles
を作成します。 各アーキテクチャー用のイメージをビルドします。以下に例を示します。
$ podman build --platform linux/arm64,linux/amd64 --manifest <registry>/<image> .
-
--platform linux/arm64,linux/amd64
オプションは、コンテナーイメージのビルド対象のターゲットプラットフォームを指定します。 -
--manifest <registry>/<image>
オプションは、指定の名前 (<registry>/<image>
) を含むマニフェストリストを作成し、新しくビルドされたイメージをそのリストに追加します。マニフェストリストは、それぞれ異なるアーキテクチャーをターゲットとするイメージマニフェストのコレクションです。
-
マニフェストリストをレジストリーにプッシュします。
$ podman manifest push <registry>/<image>
このマニフェストリストは、マルチアーキテクチャーコンテナーをプルする際の唯一のエントリーポイントとして機能します。
これにより、単一のマニフェストリストに基づいて、プラットフォームに適したコンテナーイメージをプルできるようになります。
また、podman manifest remove <manifest_list> <digest_ID>
コマンドを使用すると、マニフェストリストから項目を削除できます。<digest_ID>
は、コンテナーイメージの SHA-256 チェックサムです。例: podman manifest remove <registry>/<image> sha256:cb8a924afdf…
検証
マニフェストリストを表示します。
$ podman manifest inspect <registry>/<image>
関連情報
-
podman-build(1)
man ページ -
podman-manifest(1)
man ページ - 記事 How to build multi-architecture container images