You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Some history behind bundle requirements:
* 77d44b1 (Update runtime.md, 2015-06-16) lands the initial reference
to a root filesystem, requiring a relative path. It also lands the
"bundle" construct, which at this point includes content
directories, signatures, and the configuration file. The content
directories "at least" include the root filesystem.
* 5d2eb18 (*: re-org the spec, 2015-06-24) shifts the bundle docs to
bundle.md and demotes signatures to "other related content".
* 91f5ad7 (bundle.md: various updates to latest spec, 2015-07-02,
opencontainers#55) finishes the signature demotion and strengthens the
root-inclusion requirement with another "must include".
* 7232e4b (specs: introduce the concept of a runtime.json,
2015-07-30, opencontainers#88) split out runtime.json, required the root directory
to exist at `rootfs`, and dropped most references to "content
directories".
* 106ec2d (Cleanup bundle.md, 2015-10-02, opencontainers#210) kept the requirement
for a rootfs directory in the bundle root, but relaxed the name
requirement to allow other single-component names
(e.g. `my-rootfs`). Dropped the last reference to "content
directories".
* cb2da54 (config: Single, unified config file, 2015-12-28, opencontainers#284)
rolled runtime.json back into config.json.
* b2e9154 (Remove requirement for rootfs path to be relative,
2016-04-22, opencontainers#394) allowed absolute paths for root.path and removed
some "same directory" language while leaving other "same directory"
language.
I think the root filesystem should be optional [1], but even folks who
disagree on that point have come to the conclusion that it doesn't
need to be in the bundle [2]. opencontainers#394 seems partially unfinished, but I
think the intention was clear. Once you relax the "bundle must
contain the root filesystem" requirement, the only thing that the
bundle must contain is config.json. It doesn't seem to be worth the
trouble to name a "bundle" construct if its only meaning is "the
directory that holds config.json", so this commit removes all
remaining references to the term "bundle".
[1]: https://groups.google.com/a/opencontainers.org/forum/#!topic/dev/6ZKMNWujDhU
Subject: Dropping the rootfs requirement and restoring arbitrary bundle content
Date: Wed, 26 Aug 2015 12:54:47 -0700
Message-ID: <[email protected]>
[2]: opencontainers#389 (comment)
Signed-off-by: W. Trevor King <[email protected]>
Copy file name to clipboardExpand all lines: README.md
+5-6Lines changed: 5 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,6 @@ Table of Contents
12
12
-[Roadmap](ROADMAP.md)
13
13
-[Implementations](implementations.md)
14
14
-[project](project.md)
15
-
-[Filesystem Bundle](bundle.md)
16
15
- Runtime and Lifecycle
17
16
-[General Runtime and Lifecycle](runtime.md)
18
17
-[Linux-specific Runtime and Lifecycle](runtime-linux.md)
@@ -31,11 +30,11 @@ An implementation that satisfies all the MUST or REQUIRED and all the SHOULD req
31
30
32
31
To provide context for users the following section gives example use cases for each part of the spec.
33
32
34
-
#### Application Bundle Builders
33
+
#### Application Publishers
35
34
36
-
Application bundle builders can create a [bundle](bundle.md)directory that includes all of the files required for launching an application as a container.
37
-
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).
38
-
Because the configuration includes host-specific settings, application bundle directories copied between two hosts may require configuration adjustments.
35
+
Application publishers distribute OCI [configuration files](config.md)and related resources (for example, [referenced filesystems](config.md#root-configuration)for launching an application as a [container](glossary.md#container).
36
+
The publisher 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).
37
+
Because the configuration includes host-specific settings, configurations copied between two hosts may require local adjustments.
39
38
40
39
#### Hook Developers
41
40
@@ -44,7 +43,7 @@ Example use cases include sophisticated network configuration, volume garbage co
44
43
45
44
#### Runtime Developers
46
45
47
-
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.
46
+
Runtime developers can build runtime implementations that perform [operations](runtime.md#operations) on [containers](glossary.md#container) on a particular platform.
Copy file name to clipboardExpand all lines: config.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ Below is a detailed description of each field defined in the configuration forma
10
10
11
11
## Specification version
12
12
13
-
***`ociVersion`** (string, required) MUST be in [SemVer v2.0.0](http://semver.org/spec/v2.0.0.html) format and specifies the version of the OpenContainer specification with which the bundle complies.
13
+
***`ociVersion`** (string, required) MUST be in [SemVer v2.0.0](http://semver.org/spec/v2.0.0.html) format and specifies the version of the OpenContainer specification with which the configuration complies.
14
14
The OpenContainer spec follows semantic versioning and retains forward and backward compatibility within major versions.
15
15
For example, if an implementation is compliant with version 1.0.1 of the spec, it is compatible with the complete 1.x series.
16
16
NOTE that there is no guarantee for forward or backward compatibility for version 0.x.
@@ -180,7 +180,7 @@ _Note: For Solaris, uid and gid specify the uid and gid of the process inside th
180
180
181
181
## Hostname
182
182
183
-
***`hostname`** (string, optional) as it is accessible to processes running inside. On Linux, you can only set this if your bundle creates a new [UTS namespace][uts-namespace].
183
+
***`hostname`** (string, optional) as it is accessible to processes running inside. On Linux, you can only set this if your configuration creates a new [UTS namespace][uts-namespace].
Copy file name to clipboardExpand all lines: glossary.md
+2-6Lines changed: 2 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,8 @@
1
1
# Glossary
2
2
3
-
## Bundle
4
-
5
-
A [directory structure](bundle.md) that is written ahead of time, distributed, and used to seed the runtime for creating a [container](#container) and launching a process within it.
6
-
7
3
## Configuration
8
4
9
-
The [`config.json`](config.md) file in a [bundle](#bundle)which defines the intended [container](#container) and container process.
5
+
The [`config.json`](config.md) file which defines the intended [container](#container) and container process.
10
6
11
7
## Container
12
8
@@ -24,7 +20,7 @@ All configuration [JSON][] MUST be encoded in [UTF-8][].
24
20
## Runtime
25
21
26
22
An implementation of this specification.
27
-
It reads the [configuration files](#configuration) from a [bundle](#bundle), uses that information to create a [container](#container), launches a process inside the container, and performs other [lifecycle actions](runtime.md).
23
+
It performs [operations](runtime.md#operations) on [containers](#container).
Copy file name to clipboardExpand all lines: principles.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,15 +27,15 @@ They are started in the same way whether they contain a postgres database, a php
27
27
## 3. Infrastructure-agnostic
28
28
29
29
Standard Containers are INFRASTRUCTURE-AGNOSTIC: they can be run in any OCI supported infrastructure.
30
-
For example, a standard container can be bundled on a laptop, uploaded to cloud storage, downloaded, run and snapshotted by a build server at a fiber hotel in Virginia, uploaded to 10 staging servers in a home-made private cloud cluster, then sent to 30 production instances across 3 public cloud regions.
30
+
For example, a standard container can be packaged on a laptop, uploaded to cloud storage, downloaded, run and snapshotted by a build server at a fiber hotel in Virginia, uploaded to 10 staging servers in a home-made private cloud cluster, then sent to 30 production instances across 3 public cloud regions.
31
31
32
32
## 4. Designed for automation
33
33
34
34
Standard Containers are DESIGNED FOR AUTOMATION: because they offer the same standard operations regardless of content and infrastructure, Standard Containers, are extremely well-suited for automation.
35
35
In fact, you could say automation is their secret weapon.
36
36
37
37
Many things that once required time-consuming and error-prone human effort can now be programmed.
38
-
Before Standard Containers, by the time a software component ran in production, it had been individually built, configured, bundled, documented, patched, vendored, templated, tweaked and instrumented by 10 different people on 10 different computers.
38
+
Before Standard Containers, by the time a software component ran in production, it had been individually built, configured, packaged, documented, patched, vendored, templated, tweaked and instrumented by 10 different people on 10 different computers.
39
39
Builds failed, libraries conflicted, mirrors crashed, post-it notes were lost, logs were misplaced, cluster updates were half-broken.
40
40
The process was slow, inefficient and cost a fortune - and was entirely different depending on the language and infrastructure provider.
Copy file name to clipboardExpand all lines: runtime.md
+5-6Lines changed: 5 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ There is no requirement that it be unique across hosts.
16
16
The ID is provided in the state because hooks will be executed with the state as the payload.
17
17
This allows the hooks to perform cleanup and teardown logic after the runtime destroys its own state.
18
18
***`pid`**: (int) is the ID of the main process within the container, as seen by the host.
19
-
***`bundlePath`**: (string) is the absolute path to the container's bundle directory.
19
+
***`configPath`**: (string) is the absolute path to the container's [configuration](config.md).
20
20
This is provided so that consumers can find the container's configuration and root filesystem on the host.
21
21
22
22
When serialized in JSON, the format MUST adhere to the following pattern:
@@ -26,7 +26,7 @@ When serialized in JSON, the format MUST adhere to the following pattern:
26
26
"ociVersion": "0.2.0",
27
27
"id": "oci-container1",
28
28
"pid": 4422,
29
-
"bundlePath": "/containers/redis"
29
+
"configPath": "/containers/redis/config.json"
30
30
}
31
31
```
32
32
@@ -35,7 +35,7 @@ See [Query State](#query-state) for information on retrieving the state of a con
35
35
## Lifecycle
36
36
The lifecycle describes the timeline of events that happen from when a container is created to when it ceases to exist.
37
37
38
-
1. OCI compliant runtime is invoked with a reference to the location of the bundle.
38
+
1. OCI compliant runtime is invoked with a reference to the [configuration](config.md).
39
39
How this reference is passed to the runtime is an implementation detail.
40
40
2. The container's runtime environment MUST be created according to the configuration in [`config.json`](config.md).
41
41
Any updates to `config.json` after container is running MUST not affect the container.
@@ -73,11 +73,10 @@ In particular, the state MUST be serialized as JSON.
73
73
74
74
### Start
75
75
76
-
`start <container-id> <path-to-bundle>`
76
+
`start <container-id> <path-to-configuration>`
77
77
78
-
This operation MUST generate an error if it is not provided a path to the bundle and the container ID to associate with the container.
78
+
This operation MUST generate an error if it is not provided a path to the [configuration](config.md) and the container ID to associate with the container.
79
79
If the ID provided is not unique across all containers within the scope of the runtime, or is not valid in any other way, the implementation MUST generate an error.
80
-
Using the data in `config.json`, that are in the bundle's directory, this operation MUST create a new container.
81
80
This includes creating the relevant namespaces, resource limits, etc and configuring the appropriate capabilities for the container.
82
81
A new process within the scope of the container MUST be created as specified by the `config.json` file otherwise an error MUST be generated.
0 commit comments