123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- //go:build !windows
- // +build !windows
- package main
- import (
- "bytes"
- "os"
- "os/exec"
- "strings"
- "github.com/docker/docker/pkg/sysinfo"
- )
- var (
- // SysInfo stores information about which features a kernel supports.
- SysInfo *sysinfo.SysInfo
- )
- func cpuCfsPeriod() bool {
- return testEnv.DaemonInfo.CPUCfsPeriod
- }
- func cpuCfsQuota() bool {
- return testEnv.DaemonInfo.CPUCfsQuota
- }
- func cpuShare() bool {
- return testEnv.DaemonInfo.CPUShares
- }
- func oomControl() bool {
- return testEnv.DaemonInfo.OomKillDisable
- }
- func pidsLimit() bool {
- return SysInfo.PidsLimit
- }
- func memoryLimitSupport() bool {
- return testEnv.DaemonInfo.MemoryLimit
- }
- func memoryReservationSupport() bool {
- return SysInfo.MemoryReservation
- }
- func swapMemorySupport() bool {
- return testEnv.DaemonInfo.SwapLimit
- }
- func memorySwappinessSupport() bool {
- return testEnv.IsLocalDaemon() && SysInfo.MemorySwappiness
- }
- func blkioWeight() bool {
- return testEnv.IsLocalDaemon() && SysInfo.BlkioWeight
- }
- func cgroupCpuset() bool {
- return testEnv.DaemonInfo.CPUSet
- }
- func seccompEnabled() bool {
- return SysInfo.Seccomp
- }
- func bridgeNfIptables() bool {
- return !SysInfo.BridgeNFCallIPTablesDisabled
- }
- func unprivilegedUsernsClone() bool {
- content, err := os.ReadFile("/proc/sys/kernel/unprivileged_userns_clone")
- return err != nil || !strings.Contains(string(content), "0")
- }
- func overlayFSSupported() bool {
- cmd := exec.Command(dockerBinary, "run", "--rm", "busybox", "/bin/sh", "-c", "cat /proc/filesystems")
- out, err := cmd.CombinedOutput()
- if err != nil {
- return false
- }
- return bytes.Contains(out, []byte("overlay\n"))
- }
- func init() {
- if testEnv.IsLocalDaemon() {
- SysInfo = sysinfo.New()
- }
- }
|