メインコンテンツまでスキップ

マルチアーキ対応

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 に添付します。

取り出し方や中身については、AttestationSBOM を参照してください。