gopkg.in/docker/docker.v20@v20.10.27/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  }