...

Text file src/github.com/opencontainers/image-spec/spec.md

Documentation: github.com/opencontainers/image-spec

     1# Open Container Initiative
     2
     3## Image Format Specification
     4
     5This specification defines an OCI Image, consisting of an [image manifest](manifest.md), an [image index](image-index.md) (optional), a set of [filesystem layers](layer.md), and a [configuration](config.md).
     6
     7The goal of this specification is to enable the creation of interoperable tools for building, transporting, and preparing a container image to run.
     8
     9### Table of Contents
    10
    11- [Notational Conventions](#notational-conventions)
    12- [Overview](#overview)
    13  - [Understanding the Specification](#understanding-the-specification)
    14  - [Media Types](media-types.md)
    15- [Content Descriptors](descriptor.md)
    16- [Image Layout](image-layout.md)
    17- [Image Manifest](manifest.md)
    18- [Image Index](image-index.md)
    19- [Filesystem Layers](layer.md)
    20- [Image Configuration](config.md)
    21- [Annotations](annotations.md)
    22- [Conversion](conversion.md)
    23- [Considerations](considerations.md)
    24  - [Extensibility](considerations.md#extensibility)
    25  - [Canonicalization](considerations.md#canonicalization)
    26
    27## Notational Conventions
    28
    29The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in [RFC 2119](https://tools.ietf.org/html/rfc2119) (Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997).
    30
    31The key words "unspecified", "undefined", and "implementation-defined" are to be interpreted as described in the [rationale for the C99 standard][c99-unspecified].
    32
    33An implementation is not compliant if it fails to satisfy one or more of the MUST, MUST NOT, REQUIRED, SHALL, or SHALL NOT requirements for the protocols it implements.
    34An implementation is compliant if it satisfies all the MUST, MUST NOT, REQUIRED, SHALL, and SHALL NOT requirements for the protocols it implements.
    35
    36## Overview
    37
    38At a high level the image manifest contains metadata about the contents and dependencies of the image including the content-addressable identity of one or more [filesystem layer changeset](layer.md) archives that will be unpacked to make up the final runnable filesystem.
    39The image configuration includes information such as application arguments, environments, etc.
    40The image index is a higher-level manifest which points to a list of manifests and descriptors.
    41Typically, these manifests may provide different implementations of the image, possibly varying by platform or other attributes.
    42
    43![build diagram](img/build-diagram.png)
    44
    45Once built the OCI Image can then be discovered by name, downloaded, verified by hash, trusted through a signature, and unpacked into an [OCI Runtime Bundle](https://github.com/opencontainers/runtime-spec/blob/master/bundle.md).
    46
    47![runtime diagram](img/run-diagram.png)
    48
    49### Understanding the Specification
    50
    51The [OCI Image Media Types](media-types.md) document is a starting point to understanding the overall structure of the specification.
    52
    53The high-level components of the spec include:
    54
    55- [Image Manifest](manifest.md) - a document describing the components that make up a container image
    56- [Image Index](image-index.md) - an annotated list of manifests
    57- [Image Layout](image-layout.md) - a filesystem layout representing the contents of an image
    58- [Filesystem Layer](layer.md) - a changeset that describes a container's filesystem
    59- [Image Configuration](config.md) - a document determining layer ordering and configuration of the image suitable for translation into a [runtime bundle][runtime-spec]
    60- [Conversion](conversion.md) - a document describing how this translation should occur
    61- [Artifacts Guidance](artifacts-guidance.md) - a document describing how to use the spec for packaging content other than OCI images
    62- [Descriptor](descriptor.md) - a reference that describes the type, metadata and content address of referenced content
    63
    64Future versions of this specification may include the following OPTIONAL features:
    65
    66- Signatures that are based on signing image content address
    67- Naming that is federated based on DNS and can be delegated
    68
    69[c99-unspecified]: https://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf#page=18
    70[runtime-spec]: https://github.com/opencontainers/runtime-spec

View as plain text