...

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

Documentation: github.com/opencontainers/image-spec

     1# OCI Image Format Specification
     2
     3![GitHub Actions for Docs and Linting](https://img.shields.io/github/actions/workflow/status/opencontainers/image-spec/docs-and-linting.yml?branch=main&label=GHA%20docs%20and%20linting)
     4![License](https://img.shields.io/github/license/opencontainers/image-spec)
     5[![Go Reference](https://pkg.go.dev/badge/github.com/opencontainers/image-spec.svg)](https://pkg.go.dev/github.com/opencontainers/image-spec)
     6
     7The OCI Image Format project creates and maintains the software shipping container image format spec (OCI Image Format).
     8
     9**[The specification can be found here](spec.md).**
    10
    11This repository also provides [Go types](specs-go), [intra-blob validation tooling, and JSON Schema](schema).
    12The Go types and validation should be compatible with the current Go release; earlier Go releases are not supported.
    13
    14Additional documentation about how this group operates:
    15
    16- [Code of Conduct][code-of-conduct]
    17- [Roadmap](#roadmap)
    18- [Releases](RELEASES.md)
    19- [Project Documentation](project.md)
    20
    21## Running an OCI Image
    22
    23The OCI Image Format partner project is the [OCI Runtime Spec project](https://github.com/opencontainers/runtime-spec).
    24The Runtime Specification outlines how to run a "[filesystem bundle](https://github.com/opencontainers/runtime-spec/blob/master/bundle.md)" that is unpacked on disk.
    25At a high-level an OCI implementation would download an OCI Image then unpack that image into an OCI Runtime filesystem bundle.
    26At this point the OCI Runtime Bundle would be run by an OCI Runtime.
    27
    28This entire workflow supports the UX that users have come to expect from container engines like Docker and rkt: primarily, the ability to run an image with no additional arguments:
    29
    30- docker run example.com/org/app:v1.0.0
    31- rkt run example.com/org/app,version=v1.0.0
    32
    33To support this UX the OCI Image Format contains sufficient information to launch the application on the target platform (e.g. command, arguments, environment variables, etc).
    34
    35## Distributing an OCI Image
    36
    37The [OCI Distribution Spec Project](https://github.com/opencontainers/distribution-spec/) defines an API protocol to facilitate and standardize the distribution of content.
    38This API includes support for pushing and pulling OCI images to an OCI conformant registry.
    39
    40## FAQ
    41
    42**Q: What happens to AppC or Docker Image Formats?**
    43
    44A: Existing formats can continue to be a proving ground for technologies, as needed.
    45The OCI Image Format project strives to provide a dependable open specification that can be shared between different tools and be evolved for years or decades of compatibility; as the deb and rpm format have.
    46
    47Find more [FAQ on the OCI site](https://www.opencontainers.org/faq).
    48
    49## Roadmap
    50
    51The [GitHub milestones](https://github.com/opencontainers/image-spec/milestones) lay out the path to the future improvements.
    52
    53## Contributing
    54
    55Development happens on GitHub for the spec.
    56Issues are used for bugs and actionable items and longer discussions can happen on the [mailing list](#mailing-list).
    57
    58The specification and code is licensed under the Apache 2.0 license found in the `LICENSE` file of this repository.
    59
    60### Discuss your design
    61
    62The project welcomes submissions, but please let everyone know what you are working on.
    63
    64Before undertaking a nontrivial change to this specification, send mail to the [mailing list](#mailing-list) to discuss what you plan to do.
    65This gives everyone a chance to validate the design, helps prevent duplication of effort, and ensures that the idea fits.
    66It also guarantees that the design is sound before code is written; a GitHub pull-request is not the place for high-level discussions.
    67
    68Typos and grammatical errors can go straight to a pull-request.
    69When in doubt, start on the [mailing-list](#mailing-list).
    70
    71### Meetings
    72
    73Please see the [OCI org repository README](https://github.com/opencontainers/org#meetings) for the most up-to-date information on OCI contributor and maintainer meeting schedules.
    74You can also find links to meeting agendas and minutes for all prior meetings.
    75
    76### Mailing List
    77
    78You can subscribe and join the mailing list on [Google Groups](https://groups.google.com/a/opencontainers.org/forum/#!forum/dev).
    79
    80### IRC
    81
    82OCI discussion happens on #opencontainers on Freenode ([logs][irc-logs]).
    83
    84### Markdown style
    85
    86To keep consistency throughout the Markdown files in the Open Container spec all files should be formatted one sentence per line.
    87This fixes two things: it makes diffing easier with git and it resolves fights about line wrapping length.
    88For example, this paragraph will span three lines in the Markdown source.
    89
    90### Git commit
    91
    92#### Sign your work
    93
    94The 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.
    95The rules are pretty simple: if you can certify the below (from [developercertificate.org](https://developercertificate.org/)):
    96
    97```text
    98Developer Certificate of Origin
    99Version 1.1
   100
   101Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
   102660 York Street, Suite 102,
   103San Francisco, CA 94110 USA
   104
   105Everyone is permitted to copy and distribute verbatim copies of this
   106license document, but changing it is not allowed.
   107
   108
   109Developer's Certificate of Origin 1.1
   110
   111By making a contribution to this project, I certify that:
   112
   113(a) The contribution was created in whole or in part by me and I
   114    have the right to submit it under the open source license
   115    indicated in the file; or
   116
   117(b) The contribution is based upon previous work that, to the best
   118    of my knowledge, is covered under an appropriate open source
   119    license and I have the right under that license to submit that
   120    work with modifications, whether created in whole or in part
   121    by me, under the same open source license (unless I am
   122    permitted to submit under a different license), as indicated
   123    in the file; or
   124
   125(c) The contribution was provided directly to me by some other
   126    person who certified (a), (b) or (c) and I have not modified
   127    it.
   128
   129(d) I understand and agree that this project and the contribution
   130    are public and that a record of the contribution (including all
   131    personal information I submit with it, including my sign-off) is
   132    maintained indefinitely and may be redistributed consistent with
   133    this project or the open source license(s) involved.
   134```
   135
   136then you just add a line to every git commit message:
   137
   138```text
   139Signed-off-by: Joe Smith <joe@gmail.com>
   140```
   141
   142using your real name (sorry, no pseudonyms or anonymous contributions.)
   143
   144You can add the sign off when creating the git commit via `git commit -s`.
   145
   146### Commit Style
   147
   148Simple house-keeping for clean git history.
   149Read more on [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/) or the Discussion section of [`git-commit(1)`](https://git-scm.com/docs/git-commit).
   150
   1511. Separate the subject from body with a blank line
   1522. Limit the subject line to 50 characters
   1533. Capitalize the subject line
   1544. Do not end the subject line with a period
   1555. Use the imperative mood in the subject line
   1566. Wrap the body at 72 characters
   1577. Use the body to explain what and why vs. how
   158   - If there was important/useful/essential conversation or information, copy or include a reference
   1598. When possible, one keyword to scope the change in the subject (i.e. "README: ...", "runtime: ...")
   160
   161[code-of-conduct]: https://github.com/opencontainers/org/blob/master/CODE_OF_CONDUCT.md
   162[irc-logs]: http://ircbot.wl.linuxfoundation.org/eavesdrop/%23opencontainers/

View as plain text