|
1 | | -# Bundle |
| 1 | +# Filesystem Bundle |
2 | 2 |
|
3 | 3 | ## Container Format |
4 | 4 |
|
5 | | -This section defines a format for encoding a container as a *bundle* - a directory organized in a certain way, and containing all the necessary data and metadata for any compliant runtime to perform all standard operations against it. |
| 5 | +This section defines a format for encoding a container as a *filesystem bundle* - a set of files organized in a certain way, and containing all the necessary data and metadata for any compliant runtime to perform all standard operations against it. |
6 | 6 | See also [OS X application bundles](http://en.wikipedia.org/wiki/Bundle_%28OS_X%29) for a similar use of the term *bundle*. |
7 | 7 |
|
8 | | -The format does not define distribution. |
9 | | -In other words, it only specifies how a container must be stored on a local filesystem, for consumption by a runtime. |
10 | | -It does not specify how to transfer a container between computers, how to discover containers, or assign names or versions to them. |
11 | | -Any distribution method capable of preserving the original layout of a container, as specified here, is considered compliant. |
| 8 | +The definition of a bundle is only concerned with how a container, and its configuration data, are stored on a local file system so that it can be consumed by a compliant runtime. |
12 | 9 |
|
13 | | -A standard container bundle is made of the following 3 parts: |
| 10 | +A Standard Container bundle contains all the information needed to load and run a container. |
| 11 | +This includes the following three artifacts which MUST all reside in the same directory on the local filesystem: |
14 | 12 |
|
15 | | -- A top-level directory holding everything else |
16 | | -- One or more content directories |
17 | | -- A configuration file |
| 13 | +1. `config.json` : immutable, host independent configuration. |
| 14 | +This REQUIRED file, which MUST be named `config.json`, contains settings that are host independent and application specific such as security permissions, environment variables and arguments. |
| 15 | +See [`config.json`](config.md) for more details. |
18 | 16 |
|
19 | | -## Directory layout |
| 17 | +2. `runtime.json` : mutable, host dependent configuration. |
| 18 | +This REQUIRED file, which MUST be named `runtime.json`, contains settings that are host specific such as memory limits, local device access and mount sources. |
| 19 | +The goal is that the bundle can be moved as a unit to another runtime and run the same application if `runtime.json` is reconfigured. |
| 20 | +See [`runtime.json`](runtime-config.md) for more details. |
20 | 21 |
|
21 | | -A Standard Container bundle is a directory containing all the content needed to load and run a container. |
22 | | -This includes two configuration files `config.json` and `runtime.json`, and a rootfs directory. |
23 | | -The `config.json` file contains settings that are host independent and application specific such as security permissions, environment variables and arguments. |
24 | | -The `runtime.json` file contains settings that are host specific such as memory limits, local device access and mount points. |
25 | | -The goal is that the bundle can be moved as a unit to another machine and run the same application if `runtime.json` is removed or reconfigured. |
| 22 | +3. A directory representing the root filesystem of the container. |
| 23 | +While the name of this REQUIRED directory may be arbitrary, users should consider using a conventional name, such as `rootfs`. |
| 24 | +This directory MUST be referenced from within the `config.json` file. |
26 | 25 |
|
27 | | -Configuration file syntax and semantics: |
28 | | - |
29 | | -* [`config.json`](config.md) (immutable, host independent configuration) |
30 | | -* [`runtime.json`](runtime-config.md) (mutable, host dependent configuration) |
31 | | - |
32 | | -A single `rootfs` directory MUST be in the same directory as the `config.json`. |
33 | | -The names of the directories may be arbitrary, but users should consider using conventional names as in the example below. |
34 | | - |
35 | | -``` |
36 | | -config.json |
37 | | -runtime.json |
38 | | -rootfs/ |
39 | | -``` |
| 26 | +While these three artifacts MUST all be present in a single directory on the local filesytem, that directory itself is not part of the bundle. |
| 27 | +In other words, a tar archive of a *bundle* will have these artifacts at the root of the archive, not nested within a top-level directory. |
0 commit comments