Merge pull request #38 from crosbymichael/add-specs
Add sample config files
This commit is contained in:
commit
2391c3dd8d
|
@ -13,7 +13,7 @@ a `container.json` file is placed with the runtime configuration for how the pro
|
||||||
should be contained and run. Environment, networking, and different capabilities for the
|
should be contained and run. Environment, networking, and different capabilities for the
|
||||||
process are specified in this file. The configuration is used for each process executed inside the container.
|
process are specified in this file. The configuration is used for each process executed inside the container.
|
||||||
|
|
||||||
See the `container.json` file for what the configuration should look like.
|
See the `sampel_configs` folder for examples of what the container configuration should look like.
|
||||||
|
|
||||||
Using this configuration and the current directory holding the rootfs for a process, one can use libcontainer to exec the container. Running the life of the namespace, a `pid` file
|
Using this configuration and the current directory holding the rootfs for a process, one can use libcontainer to exec the container. Running the life of the namespace, a `pid` file
|
||||||
is written to the current directory with the pid of the namespaced process to the external world. A client can use this pid to wait, kill, or perform other operation with the container. If a user tries to run a new process inside an existing container with a live namespace, the namespace will be joined by the new process.
|
is written to the current directory with the pid of the namespaced process to the external world. A client can use this pid to wait, kill, or perform other operation with the container. If a user tries to run a new process inside an existing container with a live namespace, the namespace will be joined by the new process.
|
||||||
|
|
|
@ -17,7 +17,7 @@ func contains(expected string, values []string) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestContainerJsonFormat(t *testing.T) {
|
func TestContainerJsonFormat(t *testing.T) {
|
||||||
f, err := os.Open("container.json")
|
f, err := os.Open("sample_configs/attach_to_bridge.json")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Unable to open container.json")
|
t.Fatal("Unable to open container.json")
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
These configuration files can be used with `nsinit` to quickly develop, test,
|
||||||
|
and experiment with features of libcontainer.
|
||||||
|
|
||||||
|
When consuming these configuration files, copy them into your rootfs and rename
|
||||||
|
the file to `container.json` for use with `nsinit`.
|
|
@ -0,0 +1,197 @@
|
||||||
|
{
|
||||||
|
"capabilities": [
|
||||||
|
"CHOWN",
|
||||||
|
"DAC_OVERRIDE",
|
||||||
|
"FOWNER",
|
||||||
|
"MKNOD",
|
||||||
|
"NET_RAW",
|
||||||
|
"SETGID",
|
||||||
|
"SETUID",
|
||||||
|
"SETFCAP",
|
||||||
|
"SETPCAP",
|
||||||
|
"NET_BIND_SERVICE",
|
||||||
|
"SYS_CHROOT",
|
||||||
|
"KILL"
|
||||||
|
],
|
||||||
|
"cgroups": {
|
||||||
|
"allowed_devices": [
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "m",
|
||||||
|
"major_number": -1,
|
||||||
|
"minor_number": -1,
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "m",
|
||||||
|
"major_number": -1,
|
||||||
|
"minor_number": -1,
|
||||||
|
"type": 98
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"major_number": 5,
|
||||||
|
"minor_number": 1,
|
||||||
|
"path": "/dev/console",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"major_number": 4,
|
||||||
|
"path": "/dev/tty0",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"major_number": 4,
|
||||||
|
"minor_number": 1,
|
||||||
|
"path": "/dev/tty1",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"major_number": 136,
|
||||||
|
"minor_number": -1,
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"major_number": 5,
|
||||||
|
"minor_number": 2,
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"major_number": 10,
|
||||||
|
"minor_number": 200,
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 1,
|
||||||
|
"minor_number": 3,
|
||||||
|
"path": "/dev/null",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 1,
|
||||||
|
"minor_number": 5,
|
||||||
|
"path": "/dev/zero",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 1,
|
||||||
|
"minor_number": 7,
|
||||||
|
"path": "/dev/full",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 5,
|
||||||
|
"path": "/dev/tty",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 1,
|
||||||
|
"minor_number": 9,
|
||||||
|
"path": "/dev/urandom",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 1,
|
||||||
|
"minor_number": 8,
|
||||||
|
"path": "/dev/random",
|
||||||
|
"type": 99
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "docker-koye",
|
||||||
|
"parent": "docker"
|
||||||
|
},
|
||||||
|
"context": {
|
||||||
|
"mount_label": "",
|
||||||
|
"process_label": "",
|
||||||
|
"restrictions": "true"
|
||||||
|
},
|
||||||
|
"device_nodes": [
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 1,
|
||||||
|
"minor_number": 3,
|
||||||
|
"path": "/dev/null",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 1,
|
||||||
|
"minor_number": 5,
|
||||||
|
"path": "/dev/zero",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 1,
|
||||||
|
"minor_number": 7,
|
||||||
|
"path": "/dev/full",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 5,
|
||||||
|
"path": "/dev/tty",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 1,
|
||||||
|
"minor_number": 9,
|
||||||
|
"path": "/dev/urandom",
|
||||||
|
"type": 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cgroup_permissions": "rwm",
|
||||||
|
"file_mode": 438,
|
||||||
|
"major_number": 1,
|
||||||
|
"minor_number": 8,
|
||||||
|
"path": "/dev/random",
|
||||||
|
"type": 99
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"environment": [
|
||||||
|
"HOME=/",
|
||||||
|
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
|
||||||
|
"HOSTNAME=koye",
|
||||||
|
"TERM=xterm"
|
||||||
|
],
|
||||||
|
"hostname": "koye",
|
||||||
|
"namespaces": {
|
||||||
|
"NEWIPC": true,
|
||||||
|
"NEWNET": true,
|
||||||
|
"NEWNS": true,
|
||||||
|
"NEWPID": true,
|
||||||
|
"NEWUTS": true
|
||||||
|
},
|
||||||
|
"networks": [
|
||||||
|
{
|
||||||
|
"address": "127.0.0.1/0",
|
||||||
|
"gateway": "localhost",
|
||||||
|
"mtu": 1500,
|
||||||
|
"type": "loopback"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tty": true,
|
||||||
|
"user": "daemon"
|
||||||
|
}
|
Loading…
Reference in New Issue