Commit Graph

108 Commits

Author SHA1 Message Date
Vincent Batts 1c7c27d043 Merge pull request #573 from jhowardmsft/jjh/addwindows
Add support for Windows based containers
2016-09-26 16:19:32 -04:00
John Howard dc8f2c2e6e Add support for Windows-based containers
Signed-off-by: John Howard <jhoward@microsoft.com>
2016-09-22 12:13:04 -07:00
John Howard a502caf65f config: Add consoleSize to process
Signed-off-by: John Howard <jhoward@microsoft.com>
2016-09-20 15:19:27 -07:00
Mrunal Patel 67063b5a7e Merge pull request #574 from wking/config-optional-required
config: Use REQUIRED and OPTIONAL for properties
2016-09-20 14:27:04 -07:00
W. Trevor King d49c29f042 config: Replace "required" with "REQUIRED"
In all of these cases we want to use the RFC 2119 semantics.
Generated with:

  $ sed -i 's/required/REQUIRED/g' config*.md

after which I rolled back the change for:

  ...controllers required to fulfill...

since that was already MUSTed.

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-09-17 22:03:26 -07:00
W. Trevor King c35cf57303 config: Replace "optional" with "OPTIONAL"
In all of these cases we want to use the RFC 2119 semantics.
Generated with:

  $ sed -i 's/optional/OPTIONAL/g' config*.md

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-09-17 22:03:26 -07:00
John Howard 83fd44f950 Fix typo unkown'
Signed-off-by: John Howard <jhoward@microsoft.com>
2016-09-17 15:10:25 -07:00
Vincent Batts 0bb7b17b8c Merge pull request #566 from wking/mount-link-whitespace
config: Quote whitespace in mount(8) links
2016-09-15 11:23:39 -04:00
Vincent Batts a992b1b72a Merge pull request #565 from jhowardmsft/jjh/user
Windows: User struct changes
2016-09-15 11:21:57 -04:00
John Howard f9e48e0024 Windows: User struct changes
Signed-off-by: John Howard <jhoward@microsoft.com>
2016-09-14 16:14:38 -07:00
W. Trevor King 5d7721d886 config: Quote whitespace in mount(8) links
Avoid confusing Markdown.

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-09-14 14:04:03 -07:00
W. Trevor King c94e7c0ace config: Clarify ociVersion covering the configuration <-> runtime API
There are other APIs described in this specification (e.g. the state
JSON format, and the in-flight command-line API [1]), but this string
covers the configuration file and referenced objects (e.g. the
filesystem at root.path).  As additional, backwards compatible
features are added to the spec (leading to 1.1, 1.2, etc. releases)
and supported by runtimes, those runtimes will *still* stupport 1.0
configs.  Once a 2.0 spec is cut, runtimes that only support 2.0 (and
nothing in the 1.0 line) will no longer support the 1.0 config.

My preferred approach here would be to use JSON-LD [2,3,4] to
explicitly document the intended semantics for each field, which would
allow us to drop the config-wide version and version each field
independently.  That would mean a breaking change on a particular
field would only break compatibility for folks who were using that
field.  Unfortunately, I haven't had much luck pushing the consensus
in that direction.

This commit does not add wording about how the runtime and other
consumers should handle an incompatible version.  We can address that
once the command-line API lands.

[1]: https://github.com/opencontainers/runtime-spec/pull/513
[2]: https://github.com/opencontainers/runtime-spec/pull/371#issuecomment-209684002
[3]: https://github.com/opencontainers/image-spec/pull/111#discussion_r65619280
[4]: https://github.com/opencontainers/runtime-spec/pull/510#discussion_r68513241

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-09-14 01:26:38 -07:00
Ma Shimiao 61e2a60ce0 config.md: clarify the root filesystem path
Signed-off-by: Ma Shimiao <mashimiao.fnst@cn.fujitsu.com>
2016-09-09 14:01:37 +08:00
W. Trevor King a2d07dcfda Replace " : " with ": "
There's an outside change that these are intentional, since I pointed
one of these out earlier [1] and it wasn't fixed.  But I haven't seen
" : " used intentionally outside of this project, and don't think we
want to break ground in that direction ;).

[1]: https://github.com/opencontainers/runtime-spec/pull/510#discussion_r77291554

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-09-06 22:21:33 -07:00
Doug Davis 27a05de3f6 Add text about extensions
Mimic https://github.com/opencontainers/image-spec/pull/164
and they should be kept in-sync

Signed-off-by: Doug Davis <dug@us.ibm.com>
2016-09-01 19:18:07 -07:00
W. Trevor King 7477fa519f config: config: Consistent Markdown/Go wording for 'annotations'
I've replaced the old OPTIONAL with our usual:

  (<type>, <optional|required>)

to get the property name first, since that translates more directly
into a Go comment that godoc will like.

The new Go comment is much shorter, dropping "unstructured" (because
the Markdown says "structured or unstructured") and "set by external
tools..." (because *everything* in the configuration JSON is set by
external-to-the-runtime tools).

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-08-03 00:18:07 -07:00
W. Trevor King 9837b6b725 config: Consistent Markdown/Go wording for 'hooks'
The new wording isn't particularly close to either of the old
wordings, but it reads more clearly to me.  I've also added our usual:

  (<type>, <required|optional>)

to the Markdown so folks can see that this is an optional object
(although see [1] for a more complete version).

[1]: https://github.com/opencontainers/runtime-spec/pull/427
     Subject: config: Explicitly list 'hooks' as optional

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-08-03 00:16:35 -07:00
W. Trevor King ad81edca26 config: Consistent Markdown/Go wording for 'mounts'
I've replaced the old MAY with our usual

  (<type>, <optional|required>)

to get the property name first, since that translates more directly
into a Go comment that godoc will like.

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-08-03 00:16:35 -07:00
W. Trevor King 1a8611644f config: Consistent Markdown/Go wording for 'hostname'
I've changed the old "as it is accessible to ..." to the more compact
"as seen by ..." language from the old Markdown version, although I
don't think it's strictly necessary.  The original "accessbile to"
language is from 77d44b10 (Update runtime.md, 2015-06-16), which
actually looked fairly similar to the language I'm using here.  That
commit's "hostname for the container" lanuage went away in 7ac41c69
(config.md: reformat into a standard style, 2015-06-30), although that
commit made too many changes to motivate them all at that level.

I've left that language out of the Go comment, because truncating for
compact Go comments is fine (the Markdown entry is canonical, and the
Go comment is just to provide some minimal context).

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-08-03 00:16:35 -07:00
W. Trevor King d7b8877547 config: Consistent Markdown/Go/JSON-Schema wording for 'root'
I've also added our usual:

  (<type>, <required|optional>)

to the Markdown so folks can see that this is a required object.

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-08-03 00:16:24 -07:00
W. Trevor King fc103cf515 config: Consistent Markdown/Go wording for 'process'
I've dropped "main process" because "container process" is currently a
much more popular way of identifying that process in this
specification.  Before this commit:

  $ git grep -i 'main process' | wc -l
  4
  $ git grep -i 'container process' | wc -l
  13

I've also added our usual:

  (<type>, <required|optional>)

to the Markdown so folks can see that this is a required object.

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-08-03 00:10:45 -07:00
W. Trevor King 57fc2ca54c config: Consistent Markdown/Go wording for 'platform'
Don't mention OS and Arch, since they're covered by the list (in
Markdown) and Platform struct (in Go).  This gives us one less place
to update if we ever change the schema for the platform object.

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-08-02 23:45:03 -07:00
W. Trevor King f2cc9fdb60 config: Update 'OpenContainer specification' wording
Catch up with the spec title from faad7e0f (README: title rename,
2016-04-04, #365).

Also make the Go comment consistent with the Markdown spec (no need to
maintain two phrasings for the same idea).  The only difference
between the phrasings is now some shuffling at the beginning to start
off with the property name (to keep godoc happy).

The JSON Schema entry (in defs.json) is different too, because it has
to apply to both the configuration and state JSON, so mentioning
"bundle" makes less sense than mentioning "document".

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-08-02 23:41:05 -07:00
Qiang Huang 1752ce8b12 Rewrite mounts description in config.md
Also apply one sentence per line rule for list items.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
2016-07-22 14:06:54 +08:00
W. Trevor King 7f182857b4 config: Update schema.json -> config-schema.json
This slipped through the rename in 2a5986f7 (schema/state-schema.json:
Add a JSON Schema for the state JSON, 2016-06-01, #481) and the first
round of fixes in dfb85b16 (schema/README: Fix links to
(config|state)-schema.json, 2016-06-13, #498).  Reported by hapnermw
[1].

[1]: https://github.com/opencontainers/runtime-spec/issues/517

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-07-18 20:37:23 -07:00
W. Trevor King 1db5c54821 Revert "Clarify backwards compatibility for major version 0"
This reverts commit 0f25f18b9b, #253.
Now that we're on to 1.0, we don't need to talk about 0.x.  And the
lack of 0.x backwards compatability is covered by SemVer 2.0 section 4
[1]:

  Major version zero (0.y.z) is for initial development.  Anything may
  change at any time.  The public API should not be considered stable.

so removing the echo from our spec doesn't actually change anything.

The conflict is due to 4e63ee0a (config: qualify the name of the
version field, 2016-01-13, #309), and only impacted the context and
line-wrapping around the sentence I'm removing.

Conflicts:
	config.md

[1]: http://semver.org/spec/v2.0.0.html

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-06-04 16:25:59 -07:00
Michael Crosby 303c03a23d Merge pull request #412 from wking/explicit-uid-namespace
config: Explicit container namespace for uid, gid, and additionalGids
2016-06-03 11:14:09 -07:00
Aleksa Sarai ce19b8d167 *: add support for cgroup namespace
The cgroup namespace is a new kernel feature available in 4.6+ that
allows a container to isolate its cgroup hierarchy. This currently only
allows for hiding information from /proc/self/cgroup, and mounting
cgroupfs as an unprivileged user. In the future, this namespace may
allow for subtree management by a container.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2016-06-04 00:14:39 +10:00
W. Trevor King 08908d6f2e config: Explicit container namespace for uid, gid, and additionalGids
In the degenerate case where the container does not create a user
namespace, the "container namespace" distinction is unimportant, but
the phrasing is still accurate (the container and runtime namespaces
are the same).

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-06-01 20:58:02 -07:00
Qiang Huang bf9b050790 Use RFC_2119 style for config.md
Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
2016-05-23 14:30:06 +08:00
W. Trevor King 35b0e9ee8c config: Clarify MUST for platform.os and .arch
The old platform.os text had two MUST conditions.  The first could
have been read "the runtime MUST generate an error if invoked with a
config.json whose platform.os is incompatible with the host platform"
(which is the direction I'm going with this commit).  However, it
could also have been read "the bundle-validator MUST generate an error
if platform.os is incompatible with the content the bundle's other
content (e.g. 'linux' in platform.os, but only Windows binaries in the
bundle's rootfs).

For the second MUST, I doubt we want to require a compliant runtime
support all Go architectures itself.  And there is a benefit to
pointing runtime/bundle authors at the Go set, but not much benefit in
making that a hard limit [1,2].  The rewording here follows [2] in
acknowledging that process.arch-matching is something that the config
author and runtime caller have to sort out between themselves and
pointing them at the Go docs and a registration process to avoid
fragmenting the community.

[1]: https://github.com/opencontainers/image-spec/pull/29
[2]: https://github.com/opencontainers/image-spec/pull/60

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-05-20 00:02:58 -07:00
Mrunal Patel 5d27f3aa0d Merge pull request #438 from RobDolinMS/patch-2
[Config] Capitalize MUST in config.md
2016-05-19 18:12:50 -07:00
Rob Dolin (MSFT) 035713e3bf [Config] Capitalize MUST in config.md
"must" --> "MUST" for RFC 2119 compliance

This replaces PR #403 which required a rebase

Signed-off-by: Rob Dolin <RobDolin@microsoft.com>
2016-05-18 11:22:48 -07:00
Rob Dolin (MSFT) bef035ce49 [Config] Mount destinations MUST NOT be nested in Windows
This was raised during reviews with folks working on Windows Containers.  

This squashes commits from PR #433

Signed-off-by: Rob Dolin <RobDolin@microsoft.com>
2016-05-18 11:04:55 -07:00
W. Trevor King a044e07006 config.md: Remove 'solaris' from full example
This should have been part of 759ee79c (config: Add
platform-specific entry for 'solaris', 2016-05-06, #431), since
the example has platform.os set to 'linux'.

There was some (brief) discussion of this point before the 'solaris'
section landed [1], but the "should only be set if" wording landed in
parallel via b373a15 (config: Split platform-specific configuration
into its own section, 2016-05-02, #414), and I'd forgotten to go back
and apply that logic to #411.

Having a full Solaris example would be useful, but I think it should
be a separate, Solaris-only example.

[1]: https://github.com/opencontainers/runtime-spec/pull/411#discussion_r61621001

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-05-15 23:05:53 -07:00
W. Trevor King 759ee79c85 config: Add platform-specific entry for 'solaris'
Fixup for 7c9daeb (Introducing Solaris in OCI, 2016-04-25, #411) along
the lines of b373a15 (config: Split platform-specific configuration
into its own section, 2016-05-02, #414).

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-05-06 23:57:14 -07:00
W. Trevor King 41cddd7b8a config: Use spaces (not tabs) to indent JSON
Change made with:

  $ sed -i 's/\t/    /g' config.md

fixing tabs that were added with 1c49f4d2 (Add annotations and labels
to the Spec, 2016-03-04, #331).

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-05-05 19:23:32 -07:00
Vincent Batts bf58a8f544 Merge pull request #411 from anuthan/solarisSpec
Introducing Solaris in OCI
2016-05-04 16:17:37 -04:00
Abhijeeth Nuthan 7c9daebaa7 Introducing Solaris in OCI
Signed-off-by: Abhijeeth Nuthan <abhijeeth.nuthan@oracle.com>
2016-05-04 12:19:27 -07:00
Michael Crosby 07126441b3 Merge pull request #415 from wking/explicit-hook-namespace
config: Explicitly put hooks in the runtime namespace
2016-05-04 10:18:56 -07:00
W. Trevor King b373a155de config: Split platform-specific configuration into its own section (#414)
To make it clear that the whole 'linux' section is optional.

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-05-02 14:04:39 -04:00
Amit Saha 45f7ada1bb config.md: args is an array of strings (#416)
Signed-off-by: Amit Saha <amitsaha.in@gmail.com>
2016-05-01 10:10:56 -04:00
W. Trevor King a5af569061 config: Explicitly put hooks in the runtime namespace
The language from 15dee2e0 (runtime: Add prestart/poststop hooks,
2015-08-03, #34) landed well before we had glossary entries for the
runtime and container namespaces (from 5dad1255, config-linux: Specify
host mount namespace for namespace paths, 2015-12-18, #275).  Now that
we do have language to cover that concept, it's better to explicitly
say that hooks run in the runtime namespace instead of leaving it to
the reader to extrapolate from the filesystem requirement.

With the new namespace wording, the "host's filesystem" wording is
somewhat redundant.  I've left it in though, because I think it helps
to have a more gradual transition from hook paths to namespaces.

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-04-29 21:07:00 -07:00
Mrunal Patel e5e603f26f Merge pull request #407 from vbatts/annotations
config: clarify annotations sentence
2016-04-28 14:46:15 -07:00
Rob Dolin (MSFT) 646868f7d4 [ Configuration | Version ] Capitalize MUST in ociVersion description
"ociVersion ... must be in SemVer ... format" --> "ociVersion ... MUST be in SemVer ... format"

Signed-off-by: Rob Dolin <RobDolin@microsoft.com>
2016-04-28 12:42:12 -07:00
W. Trevor King 440fc5b36e specs-go/config: Make Spec.Mounts omitempty (#408)
* specs-go/config: Make Spec.Mounts omitempty

Otherwise:

  $ ocitools generate --mount-cgroups=no --template <(echo {})
  $ grep mounts config.json
          "mounts": null,

The language in config.md#Mounts is:

> You can add array of mount points...

which I think means 'MAY'.

Signed-off-by: W. Trevor King <wking@tremily.us>

* config: Use 'MAY' (RFC 2119) for mounts

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-04-28 09:46:54 -04:00
Vincent Batts 0315202c12 config: clarify annotations sentence
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-04-27 11:40:57 -04:00
Vincent Batts 6e08c6983e Merge pull request #393 from mrunalp/mount_label
Add support for Selinux mount context labels
2016-04-22 16:43:00 -04:00
Mrunal Patel 7350d5e1f1 Add support for Selinux mount context labels
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
2016-04-22 13:40:49 -07:00
Kenfe-Mickael Laventure b2e9154a31 Remove requirement for rootfs path to be relative
Closes #389

Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
2016-04-22 11:57:21 -07:00