github.com/jingleWang/moby@v1.13.1/daemon/info_unix.go (about) 1 // +build !windows 2 3 package daemon 4 5 import ( 6 "context" 7 "os/exec" 8 "strings" 9 10 "github.com/Sirupsen/logrus" 11 "github.com/docker/docker/api/types" 12 "github.com/docker/docker/dockerversion" 13 "github.com/docker/docker/pkg/sysinfo" 14 ) 15 16 // FillPlatformInfo fills the platform related info. 17 func (daemon *Daemon) FillPlatformInfo(v *types.Info, sysInfo *sysinfo.SysInfo) { 18 v.MemoryLimit = sysInfo.MemoryLimit 19 v.SwapLimit = sysInfo.SwapLimit 20 v.KernelMemory = sysInfo.KernelMemory 21 v.OomKillDisable = sysInfo.OomKillDisable 22 v.CPUCfsPeriod = sysInfo.CPUCfsPeriod 23 v.CPUCfsQuota = sysInfo.CPUCfsQuota 24 v.CPUShares = sysInfo.CPUShares 25 v.CPUSet = sysInfo.Cpuset 26 v.Runtimes = daemon.configStore.GetAllRuntimes() 27 v.DefaultRuntime = daemon.configStore.GetDefaultRuntimeName() 28 v.InitBinary = daemon.configStore.GetInitPath() 29 30 v.ContainerdCommit.Expected = dockerversion.ContainerdCommitID 31 if sv, err := daemon.containerd.GetServerVersion(context.Background()); err == nil { 32 v.ContainerdCommit.ID = sv.Revision 33 } else { 34 logrus.Warnf("failed to retrieve containerd version: %v", err) 35 v.ContainerdCommit.ID = "N/A" 36 } 37 38 v.RuncCommit.Expected = dockerversion.RuncCommitID 39 if rv, err := exec.Command(DefaultRuntimeBinary, "--version").Output(); err == nil { 40 parts := strings.Split(strings.TrimSpace(string(rv)), "\n") 41 if len(parts) == 3 { 42 parts = strings.Split(parts[1], ": ") 43 if len(parts) == 2 { 44 v.RuncCommit.ID = strings.TrimSpace(parts[1]) 45 } 46 } 47 48 if v.RuncCommit.ID == "" { 49 logrus.Warnf("failed to retrieve %s version: unknown output format: %s", DefaultRuntimeBinary, string(rv)) 50 v.RuncCommit.ID = "N/A" 51 } 52 } else { 53 logrus.Warnf("failed to retrieve %s version: %v", DefaultRuntimeBinary, err) 54 v.RuncCommit.ID = "N/A" 55 } 56 57 v.InitCommit.Expected = dockerversion.InitCommitID 58 if rv, err := exec.Command(DefaultInitBinary, "--version").Output(); err == nil { 59 parts := strings.Split(strings.TrimSpace(string(rv)), " - ") 60 if len(parts) == 2 { 61 if dockerversion.InitCommitID[0] == 'v' { 62 vs := strings.TrimPrefix(parts[0], "tini version ") 63 v.InitCommit.ID = "v" + vs 64 } else { 65 // Get the sha1 66 gitParts := strings.Split(parts[1], ".") 67 if len(gitParts) == 2 && gitParts[0] == "git" { 68 v.InitCommit.ID = gitParts[1] 69 v.InitCommit.Expected = dockerversion.InitCommitID[0:len(gitParts[1])] 70 } 71 } 72 } 73 74 if v.InitCommit.ID == "" { 75 logrus.Warnf("failed to retrieve %s version: unknown output format: %s", DefaultInitBinary, string(rv)) 76 v.InitCommit.ID = "N/A" 77 } 78 } else { 79 logrus.Warnf("failed to retrieve %s version", DefaultInitBinary) 80 v.InitCommit.ID = "N/A" 81 } 82 }