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