-
Notifications
You must be signed in to change notification settings - Fork 611
Expand file tree
/
Copy pathREADME.md
More file actions
165 lines (112 loc) · 8.09 KB
/
README.md
File metadata and controls
165 lines (112 loc) · 8.09 KB
Edit and raw actions
OlderNewer
1
# Open Container Runtime Specification
2
3
The [Open Container Initiative](http://www.opencontainers.org/) develops specifications for standards on Operating System process and application containers.
4
5
6
Table of Contents
7
8
- [Introduction](README.md)
9
- [Code of Conduct](#code-of-conduct)
10
- [Container Principles](principles.md)
11
- [Style and Conventions](style.md)
12
- [Roadmap](ROADMAP.md)
13
- [Implementations](implementations.md)
14
- [project](project.md)
15
- [Filesystem Bundle](bundle.md)
16
- Runtime and Lifecycle
17
- [General Runtime and Lifecycle](runtime.md)
18
- [Linux-specific Runtime and Lifecycle](runtime-linux.md)
19
- Configuration
20
- [General Configuration](config.md)
21
- [Linux-specific Configuration](config-linux.md)
22
- [Solaris-specific Configuration](config-solaris.md)
23
- [Glossary](glossary.md)
24
25
In the specifications in the above table of contents, the keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in [RFC 2119](http://tools.ietf.org/html/rfc2119) (Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997).
26
27
An implementation is not compliant for a given CPU architecture if it fails to satisfy one or more of the MUST, REQUIRED, or SHALL requirements for the protocols it implements.
28
An implementation is compliant for a given CPU architecture if it satisfies all the MUST, REQUIRED, and SHALL requirements for the protocols it implements.
29
30
Protocols defined by this specification are:
31
* Linux containers: [runtime.md](runtime.md), [config.md](config.md), [config-linux.md](config-linux.md), and [runtime-linux.md](runtime-linux.md).
32
* Solaris containers: [runtime.md](runtime.md), [config.md](config.md), and [config-solaris.md](config-solaris.md).
33
34
# Use Cases
35
36
To provide context for users the following section gives example use cases for each part of the spec.
37
38
#### Application Bundle Builders
39
40
Application bundle builders can create a [bundle](bundle.md) directory that includes all of the files required for launching an application as a container.
41
The bundle contains an OCI [configuration file](config.md) where the builder can specify host-independent details such as [which executable to launch](config.md#process-configuration) and host-specific settings such as [mount](config.md#mounts) locations, [hook](config.md#hooks) paths, Linux [namespaces](config-linux.md#namespaces) and [cgroups](config-linux.md#control-groups).
42
Because the configuration includes host-specific settings, application bundle directories copied between two hosts may require configuration adjustments.
43
44
#### Hook Developers
45
46
[Hook](config.md#hooks) developers can extend the functionality of an OCI-compliant runtime by hooking into a container's lifecycle with an external application.
47
Example use cases include sophisticated network configuration, volume garbage collection, etc.
48
49
#### Runtime Developers
50
51
Runtime developers can build runtime implementations that run OCI-compliant bundles and container configuration, containing low-level OS and host specific details, on a particular platform.
52
53
# Releases
54
55
There is a loose [Road Map](./ROADMAP.md).
56
During the `0.x` series of OCI releases we make no backwards compatibility guarantees and intend to break the schema during this series.
57
58
# Contributing
59
60
Development happens on GitHub for the spec.
61
Issues are used for bugs and actionable items and longer discussions can happen on the [mailing list](#mailing-list).
62
63
The specification and code is licensed under the Apache 2.0 license found in the [LICENSE](./LICENSE) file.
64
65
## Code of Conduct
66
67
Participation in the OpenContainers community is governed by [OpenContainer's Code of Conduct](https://github.com/opencontainers/tob/blob/d2f9d68c1332870e40693fe077d311e0742bc73d/code-of-conduct.md).
68
69
## Discuss your design
70
71
The project welcomes submissions, but please let everyone know what you are working on.
72
73
Before undertaking a nontrivial change to this specification, send mail to the [mailing list](#mailing-list) to discuss what you plan to do.
74
This gives everyone a chance to validate the design, helps prevent duplication of effort, and ensures that the idea fits.
75
It also guarantees that the design is sound before code is written; a GitHub pull-request is not the place for high-level discussions.
76
77
Typos and grammatical errors can go straight to a pull-request.
78
When in doubt, start on the [mailing-list](#mailing-list).
79
80
## Weekly Call
81
82
The contributors and maintainers of all OCI projects have a weekly meeting Wednesdays at 2:00 PM (USA Pacific).
83
Everyone is welcome to participate via [UberConference web][UberConference] or audio-only: 415-968-0849 (no PIN needed.)
84
An initial agenda will be posted to the [mailing list](#mailing-list) earlier in the week, and everyone is welcome to propose additional topics or suggest other agenda alterations there.
85
Minutes are posted to the [mailing list](#mailing-list) and minutes from past calls are archived to the [wiki](https://github.com/opencontainers/runtime-spec/wiki) for those who are unable to join the call.
86
87
## Mailing List
88
89
You can subscribe and join the mailing list on [Google Groups](https://groups.google.com/a/opencontainers.org/forum/#!forum/dev).
90
91
## IRC
92
93
OCI discussion happens on #opencontainers on Freenode ([logs][irc-logs]).
94
95
## Git commit
96
97
### Sign your work
98
99
The sign-off is a simple line at the end of the explanation for the patch, which certifies that you wrote it or otherwise have the right to pass it on as an open-source patch.
100
The rules are pretty simple: if you can certify the below (from [developercertificate.org](http://developercertificate.org/)):
101
102
```
103
Developer Certificate of Origin
104
Version 1.1
105
106
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
107
660 York Street, Suite 102,
108
San Francisco, CA 94110 USA
109
110
Everyone is permitted to copy and distribute verbatim copies of this
111
license document, but changing it is not allowed.
112
113
114
Developer's Certificate of Origin 1.1
115
116
By making a contribution to this project, I certify that:
117
118
(a) The contribution was created in whole or in part by me and I
119
have the right to submit it under the open source license
120
indicated in the file; or
121
122
(b) The contribution is based upon previous work that, to the best
123
of my knowledge, is covered under an appropriate open source
124
license and I have the right under that license to submit that
125
work with modifications, whether created in whole or in part
126
by me, under the same open source license (unless I am
127
permitted to submit under a different license), as indicated
128
in the file; or
129
130
(c) The contribution was provided directly to me by some other
131
person who certified (a), (b) or (c) and I have not modified
132
it.
133
134
(d) I understand and agree that this project and the contribution
135
are public and that a record of the contribution (including all
136
personal information I submit with it, including my sign-off) is
137
maintained indefinitely and may be redistributed consistent with
138
this project or the open source license(s) involved.
139
```
140
141
then you just add a line to every git commit message:
142
143
Signed-off-by: Joe Smith <[email protected]>
144
145
using your real name (sorry, no pseudonyms or anonymous contributions.)
146
147
You can add the sign off when creating the git commit via `git commit -s`.
148
149
### Commit Style
150
151
Simple house-keeping for clean git history.
152
Read more on [How to Write a Git Commit Message](http://chris.beams.io/posts/git-commit/) or the Discussion section of [`git-commit(1)`](http://git-scm.com/docs/git-commit).
153
154
1. Separate the subject from body with a blank line
155
2. Limit the subject line to 50 characters
156
3. Capitalize the subject line
157
4. Do not end the subject line with a period
158
5. Use the imperative mood in the subject line
159
6. Wrap the body at 72 characters
160
7. Use the body to explain what and why vs. how
161
* If there was important/useful/essential conversation or information, copy or include a reference
162
8. When possible, one keyword to scope the change in the subject (i.e. "README: ...", "runtime: ...")
163
164
[UberConference]: https://www.uberconference.com/opencontainers
165
[irc-logs]: http://ircbot.wl.linuxfoundation.org/eavesdrop/%23opencontainers/