SEANK.H.LIAO

container image types

json blobs with media types to rule the world

image manifest types

One of the great innovations of container images was their standard packaging and distribution. Except there's more than one standard. There's the [Docker specific variant][docker], and there's the [OCI standard][oci].

core concepts

layers

Building an image up from basics, there are the image layers: filesystems archived and compressed into a single file. These contain the bulk of content in an image.

OCI:

Docker:

config

Layers by themselves don't do much, you need some extra config, like environment variables, entrypoint, working directory, how to arrange the layers. and maybe some history/metadata. This comes as its own config manifets type:

OCI:

Docker:

image

Next is the distribution manifest that binds the config and layers together. Most tags will point to one of these

OCI:

Dcoker:

multiplatform

But an image refers to a specifc filesystem, maybe with platform specific artifacts (eg code compiled for arm64). This is where the optional list/index comes in, allowing you to specify platforms and their respective image manifests.

OCI:

Docker:

tools

build
merge