github.com/devdivbcp/moby@v17.12.0-ce-rc1.0.20200726071732-2d4bfdc789ad+incompatible/rootless/specconv/specconv_linux.go (about) 1 package specconv // import "github.com/docker/docker/rootless/specconv" 2 3 import ( 4 "io/ioutil" 5 "strconv" 6 7 "github.com/opencontainers/runtime-spec/specs-go" 8 ) 9 10 // ToRootless converts spec to be compatible with "rootless" runc. 11 // * Remove cgroups (will be supported in separate PR when delegation permission is configured) 12 // * Fix up OOMScoreAdj 13 func ToRootless(spec *specs.Spec) error { 14 return toRootless(spec, getCurrentOOMScoreAdj()) 15 } 16 17 func getCurrentOOMScoreAdj() int { 18 b, err := ioutil.ReadFile("/proc/self/oom_score_adj") 19 if err != nil { 20 return 0 21 } 22 i, err := strconv.Atoi(string(b)) 23 if err != nil { 24 return 0 25 } 26 return i 27 } 28 29 func toRootless(spec *specs.Spec, currentOOMScoreAdj int) error { 30 // Remove cgroup settings. 31 spec.Linux.Resources = nil 32 spec.Linux.CgroupsPath = "" 33 34 if spec.Process.OOMScoreAdj != nil && *spec.Process.OOMScoreAdj < currentOOMScoreAdj { 35 *spec.Process.OOMScoreAdj = currentOOMScoreAdj 36 } 37 return nil 38 }