github.com/rentongzhang/docker@v1.8.2-rc1/daemon/execdriver/native/template/default_template.go (about) 1 package template 2 3 import ( 4 "syscall" 5 6 "github.com/opencontainers/runc/libcontainer/apparmor" 7 "github.com/opencontainers/runc/libcontainer/configs" 8 ) 9 10 const defaultMountFlags = syscall.MS_NOEXEC | syscall.MS_NOSUID | syscall.MS_NODEV 11 12 // New returns the docker default configuration for libcontainer 13 func New() *configs.Config { 14 container := &configs.Config{ 15 Capabilities: []string{ 16 "CHOWN", 17 "DAC_OVERRIDE", 18 "FSETID", 19 "FOWNER", 20 "MKNOD", 21 "NET_RAW", 22 "SETGID", 23 "SETUID", 24 "SETFCAP", 25 "SETPCAP", 26 "NET_BIND_SERVICE", 27 "SYS_CHROOT", 28 "KILL", 29 "AUDIT_WRITE", 30 }, 31 Namespaces: configs.Namespaces([]configs.Namespace{ 32 {Type: "NEWNS"}, 33 {Type: "NEWUTS"}, 34 {Type: "NEWIPC"}, 35 {Type: "NEWPID"}, 36 {Type: "NEWNET"}, 37 }), 38 Cgroups: &configs.Cgroup{ 39 Parent: "docker", 40 AllowAllDevices: false, 41 MemorySwappiness: -1, 42 }, 43 Mounts: []*configs.Mount{ 44 { 45 Source: "proc", 46 Destination: "/proc", 47 Device: "proc", 48 Flags: defaultMountFlags, 49 }, 50 { 51 Source: "tmpfs", 52 Destination: "/dev", 53 Device: "tmpfs", 54 Flags: syscall.MS_NOSUID | syscall.MS_STRICTATIME, 55 Data: "mode=755", 56 }, 57 { 58 Source: "devpts", 59 Destination: "/dev/pts", 60 Device: "devpts", 61 Flags: syscall.MS_NOSUID | syscall.MS_NOEXEC, 62 Data: "newinstance,ptmxmode=0666,mode=0620,gid=5", 63 }, 64 { 65 Device: "tmpfs", 66 Source: "shm", 67 Destination: "/dev/shm", 68 Data: "mode=1777,size=65536k", 69 Flags: defaultMountFlags, 70 }, 71 { 72 Source: "mqueue", 73 Destination: "/dev/mqueue", 74 Device: "mqueue", 75 Flags: defaultMountFlags, 76 }, 77 { 78 Source: "sysfs", 79 Destination: "/sys", 80 Device: "sysfs", 81 Flags: defaultMountFlags | syscall.MS_RDONLY, 82 }, 83 { 84 Source: "cgroup", 85 Destination: "/sys/fs/cgroup", 86 Device: "cgroup", 87 Flags: defaultMountFlags | syscall.MS_RDONLY, 88 }, 89 }, 90 MaskPaths: []string{ 91 "/proc/kcore", 92 "/proc/latency_stats", 93 "/proc/timer_stats", 94 }, 95 ReadonlyPaths: []string{ 96 "/proc/asound", 97 "/proc/bus", 98 "/proc/fs", 99 "/proc/irq", 100 "/proc/sys", 101 "/proc/sysrq-trigger", 102 }, 103 } 104 105 if apparmor.IsEnabled() { 106 container.AppArmorProfile = "docker-default" 107 } 108 109 return container 110 }