Add scope to readme
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
parent
9008471a84
commit
f240c3d1a7
1 changed files with 48 additions and 2 deletions
50
README.md
50
README.md
|
@ -1,6 +1,52 @@
|
||||||
# containerd
|
# containerkit
|
||||||
|
|
||||||
`containerd` is the daemon built on containerkit for manageing containers at the system level.
|
containerkit is a collection of components for building a fully featured container runtime, storage, and distribution layers in higher level projects.
|
||||||
|
|
||||||
|
## Scope and Principles
|
||||||
|
|
||||||
|
Having a clearly defined scope of a project is important for ensuring consistency and focus.
|
||||||
|
These following criteria will be used when reviewing pull requests, features, and changes for the project before being accepted.
|
||||||
|
|
||||||
|
1. Components
|
||||||
|
|
||||||
|
containerkit is a collection of components.
|
||||||
|
These components can be used independently or together.
|
||||||
|
They should not have tight dependencies on each other so that they are unable to be used independently but should be designed in a way that when used together the components have a natural flow to the APIs.
|
||||||
|
|
||||||
|
An example for this design can be seen with the overlay filesystems and the container execution layer.
|
||||||
|
The execution layer and overlay filesystems can be used independently but if you were to use both, they share a common `Mount` struct that the filesystems produce and the execution layer consumes to start a container inside a root filesystem.
|
||||||
|
|
||||||
|
|
||||||
|
2. Primitives
|
||||||
|
|
||||||
|
containerkit should expose primitives to solve problems instead of higher level abstractions.
|
||||||
|
A common example of this is how build is implemented.
|
||||||
|
Instead of having a build API in containerkit we should expose the lower level primitives that allow things like build to work.
|
||||||
|
Breaking up the filesystem APIs to allow snapshots, copy functionality, and mounts allow people implementing build at the higher levels more flexibility.
|
||||||
|
|
||||||
|
|
||||||
|
3. Extensibility and Defaults
|
||||||
|
|
||||||
|
For the various components in containerkit there should be defined extension points where implementations can be swapped for alternatives.
|
||||||
|
The best example of this is that containerkit will use `runc` from OCI as the default runtime in the execution layer but for other runtimes conforming to the OCI Runtime specification they can be easily added to contianerkit.
|
||||||
|
|
||||||
|
containerkit will come with a default implementation for the various components.
|
||||||
|
These defaults will be chosen my the maintainers of the project and should not change unless better tech for that component comes out.
|
||||||
|
Additional implementations will not be accepted into the core repository and should be developed in a separate repository not maintained by the containerkit maintainers.
|
||||||
|
|
||||||
|
4. Scope
|
||||||
|
|
||||||
|
The following table specifies the various components of containerkit and general features of container runtimes.
|
||||||
|
The table specifies whether or not the feature/component is in or out of scope.
|
||||||
|
|
||||||
|
| Name | Description | In/Out | Reason |
|
||||||
|
|----------------|-----------------------------------------------------------------------------------------------|--------|--------------------------------------------------------------------------------------------------------------|
|
||||||
|
| execution | Provide an extensible execution layer for executing a container | in | |
|
||||||
|
| cow filesystem | Built in functionality for overlay, aufs, and other copy on write filesystems for containers | in | |
|
||||||
|
| distribution | Having the ability to push, pull, package, and sign images | in | |
|
||||||
|
| networking | Providing network functionality to containers along with configuring their network namespaces | in | |
|
||||||
|
| build | Building images as a first class API | out | Build is a higher level tooling feature and can be implemented in many different ways on top of containerkit |
|
||||||
|
| volumes | Provide primitives for volumes and persistent storage | | |
|
||||||
|
|
||||||
## Copyright and license
|
## Copyright and license
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue