The issue opens pre-filled with this page title and URL.
Have you noticed that docker pull nginx:1.25 does not always download the same layers? There are two main causes:
A different platform (AMD64 vs ARM64) → different layers (multi-arch images)
A mutable tag → the image was rebuilt/republished
To understand these behaviors, you need to know the OCI standard (Open Container Initiative). This guide explains the key concepts: tags, digests, manifests, multi-arch and artifacts.
What you will learn
OCI: the open standard that defines the format of images and registries
Tag vs digest: why a tag can change, but a digest cannot
Manifest: the JSON file that describes an image
Multi-arch: how a single reference serves several architectures
OCI artifacts: storing Helm charts, SBOMs and signatures in a registry
What is OCI?
The Open Container Initiative (OCI) is an organization that defines the open standards for containers:
Specification
What it defines
OCI Image
Image format (layers, config, manifest)
OCI Runtime
How to run a container (runc)
OCI Distribution
Registry API (push, pull, list)
Swipe to see more
Why does it matter? Thanks to OCI, an image built with Docker works with Podman, containerd, CRI-O. A registry such as Harbor, Quay or GHCR speaks the same language as Docker Hub.
Anatomy of an OCI image
An OCI image is made of 3 types of objects, all identified by their digest (SHA256 hash). It is a content-addressable system: the content determines the identifier, not the other way around.
In the diagram, follow the arrows from the tag: it points to the manifest, which in turn references the config and each layer by their digest.
It is like a fingerprint: it never changes for a given person.
When to use which?
Context
Use
Example
Local development
Tag
nginx:1.25
CI/CD (publishing)
Versioned tag + capture the digest
mon-app:1.2.3 → sha256:abc...
Production (deploy)
Digest
mon-app@sha256:abc...
Audit / compliance
Digest
Exact traceability
Dockerfile FROM
Tag or digest depending on how critical it is
FROM alpine:3.19 or FROM alpine@sha256:...
Swipe to see more
Golden rule: in production, pin by digest, not by tag. A versioned tag such as v1.2.3 is not immutable for all that: it can be republished, unless the registry forbids it through a policy.
Promotion by digest in CI/CD
The recommended workflow to guarantee traceability:
How does docker pull nginx download the right version for your CPU (AMD64 or ARM64)? Thanks to the manifest list (or OCI image index).
The principle
A manifest list is a special manifest that contains references to several manifests, one per architecture.
The diagram follows a docker pull: the client reads the manifest list, keeps the manifest for its platform (the others stay dotted), then downloads the matching layers.
Multi-architecture resolution: the linux/amd64 client asks for nginx:1.25, receives the manifest list, picks the amd64 manifest among amd64, arm64 and arm/v7, downloads its layers and gets the local image; docker buildx creates the manifest list.① GET② platform match③ pull④ local imagecreates the manifest listClientlinux/amd64Manifest listnginx:1.25amd64 manifestspecific layersarm64 manifestspecific layersarm/v7 manifestspecific layersamd64 layerslayer1.tar.gz, layer2.tar.gzLocal imageready to rundocker buildx build--platform …
OCI registries can store other types of artifacts than container images:
Artifact
Use case
Tool
Helm charts
Kubernetes packages
helm push
SBOM
List of software components
ORAS, Syft
Signatures
Attestation of origin
Cosign, Notation
Policies
OPA/Rego rules
Conftest
WASM modules
WebAssembly
ORAS
Swipe to see more
OCI 1.1 and the Referrers API
Since March 2024, the OCI 1.1 specs make it possible to associate artifacts with an image through the subject field. This solves a major problem: how do you know which SBOMs, signatures and attestations are linked to an image?
In the diagram, each artifact (signature, SBOM, attestation, vulnerability report) points to the image through its subject field, and the Referrers API lists them all from the image digest.
The Referrers API (OCI 1.1) finds, from the digest of an image, the artifacts that target it through their subject field: Cosign signature, SBOM, SLSA provenance attestation and vulnerability report.subjectsubjectsubjectsubjectImagemyapp:v1.0sha256:abc123…SignatureCosignSBOMSPDX / CycloneDXAttestationSLSA provenanceVulnerability reportTrivy / GrypeReferrers APIGET /v2/‹name›/referrers/‹digest›lists every linked artifact
Each tool in the table has its own guide: ORAS (in French) to handle OCI artifacts, Skopeo (in French) to inspect and copy images without a daemon, and Crane (in French), Google's CLI to handle OCI images. The tag strategy, the cache, multi-arch and the promotion of an image from one environment to the next are covered in CI/CD for images (in French). Now that the OCI format is clear, the supply chain of images (in French) (SBOM, scan, signature) draws the DevSecOps basics from it for trusted images.
Key points
OCI = open standard for images and registries (Docker/Podman/containerd interoperability)
Tag = mutable alias to a manifest (can change) → development
Digest = immutable SHA256 hash of the manifest → production, audit
Content-addressable = the identifier is the hash of the content → deduplication, verification
Manifest = JSON that lists config + layers with their digests
Manifest list = multi-arch index that points to one manifest per architecture
OCI 1.1 (March 2024) = Referrers API to link signatures, SBOMs, attestations to images
ORAS = store any artifact (SBOM, signatures, configs) in an OCI registry
Check that you have absorbed the essential OCI concepts: tags versus digests, the manifest, multi-arch images and OCI artifacts.
Knowledge check
Check what you have learned with this interactive quiz
7 questions
5 min
80% to pass
How it works
The timer starts when you click Start
Multiple choice, true/false and short answer questions
You can move between questions
Detailed results are shown at the end
Starts the quiz and the timer
⏱️--:--
0 / 7
Review
(0/0)
--:--
0%
0Correct
0To review
0:00Time
-Level
Score by domain
A domain groups several guides and gets several questions, so its score is more reliable than a per-topic score, which often rests on a single question.
Summary
Strengths
No topic passed at 80% on at least two questions yet.