マルチアーキ対応
Takumi Images の各イメージは、amd64 と arm64 の両方に対応しています。
:latest のような1つのタグを pull すると、実行環境のアーキテクチャに応じたイメージが自動的に選 ばれます。
これは、両アーキテクチャのビルドを1つの multi-arch OCI index にまとめて公開しているためです。
index と manifest の関係
multi-arch OCI index は、複数のアーキテクチャ向け manifest を束ねる上位の参照です。
利用者は通常 images.flatt.tech/takumi/<image>:latest のように1つのタグを指定し、コンテナランタイムが実行環境に合う manifest を選択します。
index であることと、対応アーキテクチャは、タグの manifest を見ると確認できます。
$ crane manifest images.flatt.tech/takumi/busybox:latest \
| jq '{mediaType, platforms: [.manifests[].platform]}'
{
"mediaType": "application/vnd.oci.image.index.v1+json",
"platforms": [
{
"architecture": "amd64",
"os": "linux"
},
{
"architecture": "arm64",
"os": "linux"
}
]
}
mediaType が OCI の image index であること、その下に amd64 と arm64 の manifest がぶら下がっていることが読み取れます。
Digest で固定するときの考え方
amd64 と arm64 の自動選択を残したまま固定する場合は、multi-arch index の digest を使います。 特定のアーキテクチャだけに固定したい場合は、そのアーキテクチャの子 manifest digest を使います。
通常のデプロイでは index digest を固定するほうが扱いやすく、同じ image reference を amd64 と arm64 の両方で使えます。 digest 固定の具体的な手順は、クイックスタートの digest 節を参照してください。
Attestation との関係
SBOM と SLSA Provenance は、アーキテクチャごとに内容が異なるため、index の直下ではなくアーキテクチャごとの子 manifest にそれぞれ添付しています。一方、VEX はイメージ全体に対するトリアージ結果なので、原則として multi-arch index に添付します。
取り出し方や中身については、Attestation と SBOM を参照してください。