Commit Graph

35 Commits

Author SHA1 Message Date
W. Trevor King 7d5b027673 runtime-config-linux: Separate mknod from cgroups
With mknod entries in linux.devices and cgroups entries in
linux.resources.devices.  Background discussion in [1].

For specifying device cgroups independent of device creation.  This
makes it easy to distinguish between configs that call for cgroup
adjustments (which have linux.resources entries) from those that
don't.  Without this split, folks interested in making that
distinction would have to parse the device section to determine if it
included cgroup changes.  This will also make it easy to drop either
portion (mknod [2] or cgroups [3]) independently of the other if the
project decides to do so.

Using seperate sections for mknod and cgroups also allows us to avoid
the complicated validation rules needed for the combined format
mknod/cgroup [4].

Now that there is a section specific to supplying devices, I shifted
the default device listing over from config-linux [5].  The /dev/ptmx
entry is a bit awkward, since it's not a device, but it seemed to fit
better over here.  But I would also be fine leaving it with the other
mounts in config-linux.

fileMode, uid, and gid are optional, because mknod(2) doesn't need
them and specifies the handling when they aren't set [6,7].
Similarly, major/minor numbers are only required for S_IFCHR and
S_IFBLK [6].  I've left off wording about required runtime behavior
for unset values, because I'd rather address that with a blanket rule
[8].

For the cgroup, access is optional because the kernel docs show an
example that doesn't write an access field to the devices.deny file
[9].  The current kernel docs don't go into much detail on this
behavior (I expect unset and 'rwm' are equivalent), but if the kernel
doesn't need a value written, the spec should get out of the way and
allow users to not specify a value.

The reference links are sorted into two blocks, with kernel-doc links
sorted alphabetically followed by man pages sorted alphabetically by
section.  The cgroup link is new since 2016-01-13 [10].

[1]: https://groups.google.com/a/opencontainers.org/forum/#!topic/dev/y_Fsa2_jJaM
     Subject: Separate config entries for device mknod and cgroups?
     Date: Mon, 5 Oct 2015 12:46:55 -0700
     Message-ID: <20151005194655.GN28418@odin.tremily.us>
[2]: https://github.com/opencontainers/specs/pull/98
[3]: https://groups.google.com/a/opencontainers.org/forum/#!topic/dev/qWHoKs8Fsrk
     Subject: removal of cgroups from the OCI Linux spec
     Date: Wed, 28 Oct 2015 17:01:59 +0000
     Message-ID: <CAD2oYtO1RMCcUp52w-xXemzDTs+J6t4hS5Mm4mX+uBnVONGDfA@mail.gmail.com>
[4]: https://github.com/opencontainers/specs/pull/101
[5]: https://github.com/opencontainers/specs/pull/171#discussion_r41190655
[6]: http://man7.org/linux/man-pages/man2/mknod.2.html#DESCRIPTION
[7]: https://github.com/opencontainers/specs/pull/298/files#r51053835
[8]: https://github.com/opencontainers/specs/pull/285#issuecomment-167823651
[9]: https://kernel.org/doc/Documentation/cgroup-v1/devices.txt
[10]: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34a9304a96d6351c2d35dcdc9293258378fc0bd8

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-01-27 13:52:15 -08:00
W. Trevor King cb2da5430a config: Single, unified config file
Reverting 7232e4b1 (specs: introduce the concept of a runtime.json,
2015-07-30, #88) after discussion on the mailing list [1].  The main
reason is that it's hard to draw a clear line around "inherently
runtime-specific" or "non-portable", so we shouldn't try to do that in
the spec.  Folks who want to flag settings as non-portable for their
own system are welcome to do so (e.g. "we will clobber 'hooks' in
bundles we run") are welcome to do so, but we don't have to have
to split the config into multiple files to do that.

There have been a number of additional changes since #88, so this
isn't a pure Git reversion.  Besides copy-pasting and the associated
link-target updates, I've:

* Restored path -> destination, now that the mount type contains both
  source and target paths again.  I'd prefer 'target' to 'destination'
  to match mount(2), but the pre-7232e4b1 phrasing was 'destination'
  (possibly due to Windows using 'target' for the source?).

* Restored the Windows mount example to its pre-7232e4b1 content.

* Removed required mounts from the config example (requirements landed
  in 3848a238, config-linux: specify the default devices/filesystems
  available, 2015-09-09, #164), because specifying those mounts in the
  config is now redundant.

* Used headers (vs. bold paragraphs) to set off mount examples so we
  get link anchors in the rendered Markdown.

* Replaced references to runtime.json with references to config.json.

[1]: https://groups.google.com/a/opencontainers.org/forum/#!topic/dev/0QbyJDM9fWY
     Subject: Single, unified config file (i.e. rolling back specs#88)
     Date: Wed, 4 Nov 2015 09:53:20 -0800
     Message-ID: <20151104175320.GC24652@odin.tremily.us>

Signed-off-by: W. Trevor King <wking@tremily.us>
2016-01-27 09:51:54 -08:00
Gao feng 053f05933b move the description of user ns mapping to proper file
They should stay in runtime not config.

Signed-off-by: Gao feng <omarapazanadi@gmail.com>
2016-01-05 14:19:45 +08:00
Vincent Batts 70372d3880 *.md: update TOC and links
Some of the docs were not even linked to, and did not have a logic
outline for their grouping.

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2015-09-25 11:47:16 -04:00
Vincent Batts 712a7467d1 Merge remote-tracking branch 'origin/pr/163' 2015-09-10 10:07:40 -04:00
Vincent Batts 9a8748cad4 Merge pull request #160 from mrunalp/cap_fix
Modify the capabilities constants to match header files like other constants
2015-09-09 18:59:48 -04:00
Mrunal Patel 663be9d677 Modify the capabilities constants to match header files like other constants
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
2015-09-09 12:43:17 -04:00
Brandon Philips 3848a23819 config-linux: specify the default devices/filesystems available
Fixes #95

Signed-off-by: Brandon Philips <brandon.philips@coreos.com>
2015-09-09 09:36:59 -07:00
Lai Jiangshan 339e038400 Deduplicate the field of RootfsPropagation
There are two RootfsPropagation fields, one is Linux.RootfsPropagation,
the other one is LinuxRuntime.RootfsPropagation. They are duplicated,
one of them should be removed.

The RootfsPropagation is definitely a runtime specific configuration,
so we remove the one of Linux.RootfsPropagation.

And the description of it is moved from config-linux.md to
runtime-config-linux.md.

Signed-off-by: Lai Jiangshan <jiangshanlai@gmail.com>
2015-09-09 23:27:37 +08:00
Vincent Batts 6cab2747d9 *.md: markdown formatting
Closes https://github.com/opencontainers/specs/issues/83

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2015-09-09 10:17:06 -04:00
Brandon Philips 7232e4b137 specs: introduce the concept of a runtime.json
Based on our discussion in-person yesterday it seems necessary to
separate the concept of runtime configuration from application
configuration. There are a few motivators:

- To support runtime updates of things like cgroups, rlimits, etc we
  should separate things that are inherently runtime specific from
  things that are static to the application running in the container.

- To support the goal of being able to move a bundle between hosts we
  should make it clear what parts of the spec are and are not portable
  between hosts so that upon landing on a new host the non-portable
  options may be rewritten or removed.

- In order to attach a cryptographic identity to a bundle we must not
  include details in the bundle that are host specific.
2015-08-26 09:44:09 -07:00
Tiesheng 45ae53d4db Fix typos in the "Namespace types" section
Signed-off-by: ChengTiesheng <chengtiesheng@huawei.com>
2015-08-20 11:08:40 +08:00
Mrunal Patel af36d746ba Add Apparmor, Selinux and Seccomp sections
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
2015-08-07 14:19:10 -04:00
Alexander Morozov 5273b3d785 Replace Linux.Device with more specific config
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
2015-08-06 10:26:29 -07:00
Michael Crosby 55912bd676 Merge pull request #79 from laijs/json-notation-in-md
specs: add json notation
2015-07-27 09:06:50 -07:00
Lai Jiangshan d485f77fbd specs: fix the description for the [ug]idMappings
The fields in the [ug]idMappings are changed, we should fix
the description correspondingly.

Signed-off-by: Lai Jiangshan <jiangshanlai@gmail.com>
2015-07-26 16:30:59 +08:00
Lai Jiangshan 2e186c62c3 specs: add json notation
Signed-off-by: Lai Jiangshan <jiangshanlai@gmail.com>
2015-07-26 16:27:20 +08:00
Huamin Chen c53bf87ac2 make rootfs mount propagation mode settable
Signed-off-by: Huamin Chen  <hchen@redhat.com>
2015-07-16 08:50:11 -04:00
W. Trevor King 0887300359 spec_linux.go: Rename IDMapping fields to follow syscall.SysProcIDMap
'From' and 'To' are potentially ambiguous for a one-to-one map like
this, and there's already an established name convention in
SysProcIDMap [1].  This commit removes the mental overhead of two
separate naming schemes for the same information.  I'd like to drop
IDMapping entirely in favor of SysProcIDMap, but SysProcIDMap doesn't
give the JSON hints we need for (de)serializing.

[1]: https://golang.org/pkg/syscall/#SysProcIDMap
2015-07-08 10:48:51 -07:00
Michael Crosby e8990d65d1 Merge pull request #50 from mrunalp/userns_section
Adds a section for user namespace mappings
2015-07-08 09:28:18 -07:00
Jonathan Boulle 625798536e config: minor cleanup
- link to official SemVer page
- link between config.md and config-linux.md and explain relationship
- fix typo (arch -> os)
- tweak formatting of some special characters
2015-07-06 17:37:01 -07:00
Mrunal Patel d8237f1899 Adds a section for user namespace mappings
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
2015-07-06 16:05:05 -04:00
Jonathan Boulle 1937c009ea *: small spelling fixes 2015-07-01 10:20:43 -07:00
lizf-os a402b7ae4e Fix typos in the rlimits section
Signed-off-by: Zefan Li <lizefan@huawei.com>
2015-07-01 10:25:46 +08:00
Brandon Philips aa7e14306b Merge pull request #35 from mrunalp/rlimits
Adds section for Linux Rlimits
2015-06-30 16:04:05 -07:00
Mrunal Patel a4df2e4ad5 Adds link to kernel cgroups documentation
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
2015-06-30 18:45:10 -04:00
Mrunal Patel 7f9d7d30bd Adds section for Linux Rlimits
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
2015-06-30 18:35:38 -04:00
Michael Crosby 92b590a760 Add linux spec description
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2015-06-30 15:19:06 -07:00
Michael Crosby f2569d17b4 Update config-linux for better formatting on values
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2015-06-30 15:13:30 -07:00
Michael Crosby 377213e01c Merge pull request #29 from mrunalp/linux-sysctl
Adds section for Linux Sysctl.
2015-06-30 14:32:24 -07:00
Mrunal Patel 328aba4468 Adds section for Linux Sysctl.
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
2015-06-30 15:03:16 -04:00
Mrunal Patel 144e9719f5 Makes namespaces description linux specific
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
2015-06-30 15:01:09 -04:00
Michael Crosby 9eb09f9593 Move linux specific options to linux spec
This moves some of the linux specific options like namespaces and
devices to the linux config document.  It also removes processes as an
array and replaces it with a single process.

It adds the "platform" struct for OS and Arch and updates many of the
examples to match the changes.  I also remove some of the redundant
windows examples on the portable spec document because they did not add
any extra value and many values were the same.

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2015-06-29 14:15:33 -07:00
Mrunal Patel d5c2670df6 Adds user namespace to the list of namespaces
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
2015-06-24 21:14:35 -07:00
Brandon Philips 5d2eb180f6 *: re-org the spec
We had an in-person spec discussion, lets separate the spec into some
high-level sections to clarify future discussion.

Crosby agreed to let me merge to master :)
2015-06-24 17:15:48 -07:00