The Open Container Initiative Image Specification includes specifications for how images should be constructed and stored. This document contains proposed changes to that specification to support proper VMs. 

While following this proposal, we need to keep in mind the work of the OCI Artifacts initiative. That will solve the packaging question, but will not solve the runtime question. Specifically, the goal is to have an OCI-compatible runtime be able, optionally, to run both OS virtualized images and hardware virtualized images.

This is not yet ready for submission to OCI. It is intended as a working space until we have a proposal that can be submitted.

Current Spec

The current spec mandates that the root manifest of an image is one of the following two items:

According to the image spec, the media-type of the manifest, as well as of each layer and the config, must be of a specific limited set of types.

The config itself has a defined schema and a limited set of fields, as defined by its media type application/vnd.oci.image.config.v1+json

Proposed changes

Limitations:

The proposed changes will add the following fields to the `config` section of the configuration document:

All paths in the `os` section are relative to the root of the image.

The above should be sufficient to boot any image.

Additionally, it is possible that certain images may require specific hardware to be usable, for example, certain FPGAs or GPUs. To support these, we submit a separate proposal for resources, also under the `config` section of the configuration document:

For Resources, examples are: