The Big Picture - distribution/distribution - OCI Distribution Specification

The Open Container Initiative (OCI) Distribution Specification defines an API protocol for the distribution of content, including container images. This specification aims to standardize and facilitate the distribution process, ensuring interoperability and compatibility across different registries and platforms.

Glossary

  • Digest: A digest is a property of a Descriptor which uniquely identifies content by taking a collision-resistant hash of the bytes.
  • Distribution-spec: The OCI Distribution Specification is the set of rules and guidelines for distributing content using the OCI API.
  • Extensions: The Distribution Specification Project includes a process and API for prototyping and testing extensions to the Distribution API.
  • Image Layout: The OCI Image Layout is the directory structure for OCI content-addressable blobs and location-addressable references (refs). It includes a blobs directory, oci-layout file, and an index.json file.

Overview

The OCI Distribution Specification is a crucial component of the OCI ecosystem, enabling the distribution of container images and other artifacts. It defines a standardized way to distribute content using the OCI API, ensuring interoperability and compatibility across different registries and platforms.

What is the Open Container Initiative?

The Open Container Initiative (OCI) is an open-source organization that focuses on creating open industry standards for containerization. The OCI currently manages three specifications: the Runtime Specification, the Image Specification, and the Distribution Specification. These specifications work together to ensure that any OCI-compliant image can be run on any OCI-compliant runtime, and that OCI-compliant registries are able to distribute OCI images according to OCI guidelines.

OCI Distribution Workflow

The OCI Distribution Specification outlines the process for distributing content using the OCI API. This process includes:

  1. Authentication: Users authenticate with the registry using various methods, such as tokens or certificates.
  2. Pushing: Users push content to the registry using the PUT method and the Distribution API.
  3. Pulling: Users pull content from the registry using the GET method and the Distribution API.
  4. Manifest: The OCI Image Manifest is used to describe the content being distributed, including its media type, configuration, and layers.
  5. Layout: The OCI Image Layout is the directory structure for OCI content-addressable blobs and location-addressable references.

Extensions and Associations

The OCI Distribution Specification includes a process and API for prototyping and testing extensions to the Distribution API. Additionally, the introduction of Reference Types (Associations) opens up new possibilities for managing and linking OCI artifacts. This includes scenarios like discovery and distribution of artifacts, movement of a graph of OCI content across environments, and content management of a graph of artifacts.

Upcoming Updates: OCI Image Specification v2

The OCI community has been discussing updates to the OCI Image Specification to better address new challenges. Starting from June 2020, the OCI community spent over a month discussing the requirements for OCI Image Specification v2. It is important to note that OCIv2 is just a marketing term for updating the OCIspecification to better address some use cases, and not a brand new specification.

Resources