Open Container Initiative


1. Image specification

An OCI Image is an ordered collection of root filesystem changes and the corresponding execution parameters for use within a container runtime

https://github.com/opencontainers/image-spec/blob/master/spec.md

1.1 manifest
It contains metadata (annotation = key, value pair) about the contents and dependencies of the image 
JSON file
https://github.com/opencontainers/image-spec/blob/master/manifest.md
https://docs.docker.com/engine/reference/commandline/manifest/

1.2 image index (optional)
For platform specific version of image

1.3 image layout

1.4 file system layers

1.5 configuration
JSON file https://github.com/opencontainers/image-spec/blob/master/config.md

1.6 conversion

1.7 descriptor 

Tools

2. Distribution specification

It describes the API that might be used by a registry to distribute images, to easily 
- share, 
- search, 
- obtain and 
- verify 
container image

https://github.com/opencontainers/distribution-spec/blob/master/spec.md

It is implemented by Docker Registry and https://github.com/atlaskerr/stori

3. Runtime Specification

It aims to specify the configuration, execution environment, and lifecycle of a container.
aims to specify the configuration, execution environment, and lifecycle of a container.

runc is Runtime specification OCI implementation 

LifeCycle


3.1 create command
3.2 create runtime environment using config.json
3.3 start command
3.4 pre-start hook
3.5 user program specified by process
3.6 post-start hook
3.7 exit due to exit, error, kill, crash
3.8 delete
3.9 destroy container. undo create
3.10 post-stop hook

https://github.com/opencontainers/runtime-spec/blob/master/glossary.md

CRI = Container Runtime Interface = protocol buffers + gRPC APIs + Libraries

0 comments:

Post a Comment