github.com/lacework-dev/go-moby@v20.10.12+incompatible/integration-cli/requirements_unix_test.go (about) 1 // +build !windows 2 3 package main 4 5 import ( 6 "bytes" 7 "io/ioutil" 8 "os/exec" 9 "strings" 10 11 "github.com/docker/docker/pkg/sysinfo" 12 ) 13 14 var ( 15 // SysInfo stores information about which features a kernel supports. 16 SysInfo *sysinfo.SysInfo 17 ) 18 19 func cpuCfsPeriod() bool { 20 return testEnv.DaemonInfo.CPUCfsPeriod 21 } 22 23 func cpuCfsQuota() bool { 24 return testEnv.DaemonInfo.CPUCfsQuota 25 } 26 27 func cpuShare() bool { 28 return testEnv.DaemonInfo.CPUShares 29 } 30 31 func oomControl() bool { 32 return testEnv.DaemonInfo.OomKillDisable 33 } 34 35 func pidsLimit() bool { 36 return SysInfo.PidsLimit 37 } 38 39 func memoryLimitSupport() bool { 40 return testEnv.DaemonInfo.MemoryLimit 41 } 42 43 func memoryReservationSupport() bool { 44 return SysInfo.MemoryReservation 45 } 46 47 func swapMemorySupport() bool { 48 return testEnv.DaemonInfo.SwapLimit 49 } 50 51 func memorySwappinessSupport() bool { 52 return testEnv.IsLocalDaemon() && SysInfo.MemorySwappiness 53 } 54 55 func blkioWeight() bool { 56 return testEnv.IsLocalDaemon() && SysInfo.BlkioWeight 57 } 58 59 func cgroupCpuset() bool { 60 return testEnv.DaemonInfo.CPUSet 61 } 62 63 func seccompEnabled() bool { 64 return supportsSeccomp && SysInfo.Seccomp 65 } 66 67 func bridgeNfIptables() bool { 68 return !SysInfo.BridgeNFCallIPTablesDisabled 69 } 70 71 func unprivilegedUsernsClone() bool { 72 content, err := ioutil.ReadFile("/proc/sys/kernel/unprivileged_userns_clone") 73 return err != nil || !strings.Contains(string(content), "0") 74 } 75 76 func overlayFSSupported() bool { 77 cmd := exec.Command(dockerBinary, "run", "--rm", "busybox", "/bin/sh", "-c", "cat /proc/filesystems") 78 out, err := cmd.CombinedOutput() 79 if err != nil { 80 return false 81 } 82 return bytes.Contains(out, []byte("overlay\n")) 83 } 84 85 func init() { 86 if testEnv.IsLocalDaemon() { 87 SysInfo = sysinfo.New(true) 88 } 89 }