github.com/zhouyu0/docker-note@v0.0.0-20190722021225-b8d3825084db/integration/internal/requirement/requirement_linux.go (about) 1 package requirement // import "github.com/docker/docker/integration/internal/requirement" 2 3 import ( 4 "strings" 5 6 "github.com/docker/docker/pkg/parsers/kernel" 7 "gotest.tools/icmd" 8 ) 9 10 func overlayFSSupported() bool { 11 result := icmd.RunCommand("/bin/sh", "-c", "cat /proc/filesystems") 12 if result.Error != nil { 13 return false 14 } 15 return strings.Contains(result.Combined(), "overlay\n") 16 } 17 18 // Overlay2Supported returns true if the current system supports overlay2 as graphdriver 19 func Overlay2Supported(kernelVersion string) bool { 20 if !overlayFSSupported() { 21 return false 22 } 23 24 daemonV, err := kernel.ParseRelease(kernelVersion) 25 if err != nil { 26 return false 27 } 28 requiredV := kernel.VersionInfo{Kernel: 4} 29 return kernel.CompareKernelVersion(*daemonV, requiredV) > -1 30 31 }