Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Qiang Huang authored on 2015/08/19 11:40:22... | ... |
@@ -63,6 +63,17 @@ func parseSecurityOpt(container *Container, config *runconfig.HostConfig) error |
63 | 63 |
return err |
64 | 64 |
} |
65 | 65 |
|
66 |
+func CheckKernelVersion(k, major, minor int) bool { |
|
67 |
+ if v, err := kernel.GetKernelVersion(); err != nil { |
|
68 |
+ logrus.Warnf("%s", err) |
|
69 |
+ } else { |
|
70 |
+ if kernel.CompareKernelVersion(*v, kernel.VersionInfo{Kernel: k, Major: major, Minor: minor}) < 0 { |
|
71 |
+ return false |
|
72 |
+ } |
|
73 |
+ } |
|
74 |
+ return true |
|
75 |
+} |
|
76 |
+ |
|
66 | 77 |
func checkKernel() error { |
67 | 78 |
// Check for unsupported kernel versions |
68 | 79 |
// FIXME: it would be cleaner to not test for specific versions, but rather |
... | ... |
@@ -71,13 +82,10 @@ func checkKernel() error { |
71 | 71 |
// without actually causing a kernel panic, so we need this workaround until |
72 | 72 |
// the circumstances of pre-3.10 crashes are clearer. |
73 | 73 |
// For details see https://github.com/docker/docker/issues/407 |
74 |
- if k, err := kernel.GetKernelVersion(); err != nil { |
|
75 |
- logrus.Warnf("%s", err) |
|
76 |
- } else { |
|
77 |
- if kernel.CompareKernelVersion(*k, kernel.VersionInfo{Kernel: 3, Major: 10, Minor: 0}) < 0 { |
|
78 |
- if os.Getenv("DOCKER_NOWARN_KERNEL_VERSION") == "" { |
|
79 |
- logrus.Warnf("You are running linux kernel version %s, which might be unstable running docker. Please upgrade your kernel to 3.10.0.", k.String()) |
|
80 |
- } |
|
74 |
+ if !CheckKernelVersion(3, 10, 0) { |
|
75 |
+ v, _ := kernel.GetKernelVersion() |
|
76 |
+ if os.Getenv("DOCKER_NOWARN_KERNEL_VERSION") == "" { |
|
77 |
+ logrus.Warnf("Your Linux kernel version %s can be unstable running docker. Please upgrade your kernel to 3.10.0.", v.String()) |
|
81 | 78 |
} |
82 | 79 |
} |
83 | 80 |
return nil |