What is Manifest Management?
Manifest management involves the creation, storage, retrieval, and validation of container image manifests. These manifests are essential for defining the content of container images, including the layers that make up the image, the image’s metadata (like tags and digests), and the image’s configuration.
Why is Manifest Management important?
- Image Integrity: Manifests ensure the integrity and consistency of container images. They provide a definitive record of the image’s components and metadata, allowing for verification and trust.
- Efficient Image Distribution: Manifests facilitate the efficient distribution of container images by enabling the registry to understand the image’s contents and how to deliver them to users.
- Image Versioning: Manifests enable the management of multiple versions of an image, allowing users to access specific versions based on their needs.
- Multi-Platform Support: Manifests support the creation of multi-platform images, allowing developers to build images compatible with various architectures and operating systems.
Manifest Formats
The registry supports multiple manifest formats, including manifest lists and different schema versions.
Manifest Lists
Manifest lists allow for grouping together multiple images into a single entity. This enables the creation of multi-architecture images that can run on different platforms.
Source: https://docs.docker.com/registry/spec/manifest-v2-2/#manifest-lists
Schema Versions
The registry supports different schema versions for manifests, each with its own set of features and capabilities.
Schema Version 2 (v2): The most common manifest schema used for storing image metadata. Source: https://docs.docker.com/registry/spec/manifest-v2-2/
Schema Version 1 (v1): Older schema version that is still supported by some registries. Source: https://docs.docker.com/registry/spec/manifest-v1/
Manifest Storage and Retrieval
Manifests are stored and retrieved from the registry using the Registry API. The registry uses a key-value store to store manifests, with the key being the image’s digest.
Source: https://docs.docker.com/registry/spec/api/
Manifest Validation
The registry validates manifests to ensure they conform to the specified schema and contain valid data. This validation helps maintain the integrity of the image repository and ensures that only valid images are stored.
Top-Level Directory Explanations
manifest/ - This directory is related to the manifest handling functionality of the distribution project. It includes various subdirectors for manifestlist, ocischema, schema2, and more.