Fix container.json sample to be loadable by nsinit.
Docker-DCO-1.1-Signed-off-by: Rohit Jnagal <jnagal@google.com> (github: rjnagal)
This commit is contained in:
parent
bcfc527abb
commit
60159f9737
3 changed files with 102 additions and 41 deletions
|
@ -41,21 +41,21 @@ Sample `container.json` file:
|
|||
"TERM=xterm"
|
||||
],
|
||||
"capabilities_mask" : [
|
||||
"SETPCAP",
|
||||
"SYS_MODULE",
|
||||
"SYS_RAWIO",
|
||||
"SYS_PACCT",
|
||||
"SYS_ADMIN",
|
||||
"SYS_NICE",
|
||||
"SYS_RESOURCE",
|
||||
"SYS_TIME",
|
||||
"SYS_TTY_CONFIG",
|
||||
"MKNOD",
|
||||
"AUDIT_WRITE",
|
||||
"AUDIT_CONTROL",
|
||||
"MAC_OVERRIDE",
|
||||
"MAC_ADMIN",
|
||||
"NET_ADMIN"
|
||||
{ "key": "SETPCAP" },
|
||||
{ "key": "SYS_MODULE" },
|
||||
{ "key": "SYS_RAWIO" },
|
||||
{ "key": "SYS_PACCT" },
|
||||
{ "key": "SYS_ADMIN" },
|
||||
{ "key": "SYS_NICE" },
|
||||
{ "key": "SYS_RESOURCE" },
|
||||
{ "key": "SYS_TIME" },
|
||||
{ "key": "SYS_TTY_CONFIG" },
|
||||
{ "key": "MKNOD" },
|
||||
{ "key": "AUDIT_WRITE" },
|
||||
{ "key": "AUDIT_CONTROL" },
|
||||
{ "key": "MAC_OVERRIDE" },
|
||||
{ "key": "MAC_ADMIN" },
|
||||
{ "key": "NET_ADMIN" }
|
||||
],
|
||||
"context" : {
|
||||
"apparmor_profile" : "docker-default"
|
||||
|
@ -81,11 +81,11 @@ Sample `container.json` file:
|
|||
}
|
||||
],
|
||||
"namespaces" : [
|
||||
"NEWNS",
|
||||
"NEWUTS",
|
||||
"NEWIPC",
|
||||
"NEWPID",
|
||||
"NEWNET"
|
||||
{ "key": "NEWNS" },
|
||||
{ "key": "NEWUTS" },
|
||||
{ "key": "NEWIPC" },
|
||||
{ "key": "NEWPID" },
|
||||
{ "key": "NEWNET" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
|
|
@ -8,28 +8,28 @@
|
|||
"TERM=xterm-256color"
|
||||
],
|
||||
"namespaces": [
|
||||
"NEWIPC",
|
||||
"NEWNS",
|
||||
"NEWPID",
|
||||
"NEWUTS",
|
||||
"NEWNET"
|
||||
{ "key": "NEWIPC" },
|
||||
{ "key": "NEWNS" },
|
||||
{ "key": "NEWPID" },
|
||||
{ "key": "NEWUTS" },
|
||||
{ "key": "NEWNET" }
|
||||
],
|
||||
"capabilities_mask": [
|
||||
"SETPCAP",
|
||||
"SYS_MODULE",
|
||||
"SYS_RAWIO",
|
||||
"SYS_PACCT",
|
||||
"SYS_ADMIN",
|
||||
"SYS_NICE",
|
||||
"SYS_RESOURCE",
|
||||
"SYS_TIME",
|
||||
"SYS_TTY_CONFIG",
|
||||
"MKNOD",
|
||||
"AUDIT_WRITE",
|
||||
"AUDIT_CONTROL",
|
||||
"MAC_OVERRIDE",
|
||||
"MAC_ADMIN",
|
||||
"NET_ADMIN"
|
||||
{ "key": "SETPCAP" },
|
||||
{ "key": "SYS_MODULE" },
|
||||
{ "key": "SYS_RAWIO" },
|
||||
{ "key": "SYS_PACCT" },
|
||||
{ "key": "SYS_ADMIN" },
|
||||
{ "key": "SYS_NICE" },
|
||||
{ "key": "SYS_RESOURCE" },
|
||||
{ "key": "SYS_TIME" },
|
||||
{ "key": "SYS_TTY_CONFIG" },
|
||||
{ "key": "MKNOD" },
|
||||
{ "key": "AUDIT_WRITE" },
|
||||
{ "key": "AUDIT_CONTROL" },
|
||||
{ "key": "MAC_OVERRIDE" },
|
||||
{ "key": "MAC_ADMIN" },
|
||||
{ "key": "NET_ADMIN" }
|
||||
],
|
||||
"networks": [{
|
||||
"type": "veth",
|
||||
|
@ -45,6 +45,7 @@
|
|||
"cgroups": {
|
||||
"name": "docker-koye",
|
||||
"parent": "docker",
|
||||
"memory": 5248000
|
||||
"memory": 5248000,
|
||||
"cpu_shares": 1024
|
||||
}
|
||||
}
|
||||
|
|
60
libcontainer/container_test.go
Normal file
60
libcontainer/container_test.go
Normal file
|
@ -0,0 +1,60 @@
|
|||
package libcontainer
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestContainerJsonFormat(t *testing.T) {
|
||||
f, err := os.Open("container.json")
|
||||
if err != nil {
|
||||
t.Fatal("Unable to open container.json")
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
var container *Container
|
||||
if err := json.NewDecoder(f).Decode(&container); err != nil {
|
||||
t.Log("failed to decode container config")
|
||||
t.FailNow()
|
||||
}
|
||||
if container.Hostname != "koye" {
|
||||
t.Log("hostname is not set")
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if !container.Tty {
|
||||
t.Log("tty should be set to true")
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if !container.Namespaces.Contains("NEWNET") {
|
||||
t.Log("namespaces should contain NEWNET")
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if container.Namespaces.Contains("NEWUSER") {
|
||||
t.Log("namespaces should not contain NEWUSER")
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if !container.CapabilitiesMask.Contains("SYS_ADMIN") {
|
||||
t.Log("capabilities should contain SYS_ADMIN")
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if container.CapabilitiesMask.Contains("SYS_CHROOT") {
|
||||
t.Log("capabitlies should not contain SYS_CHROOT")
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if container.Cgroups.CpuShares != 1024 {
|
||||
t.Log("cpu shares not set correctly")
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if container.Cgroups.Memory != 5248000 {
|
||||
t.Log("memory limit not set correctly")
|
||||
t.Fail()
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue