summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastiaan van Stijn <thaJeztah@users.noreply.github.com>2022-06-03 19:30:24 +0200
committerGitHub <noreply@github.com>2022-06-03 19:30:24 +0200
commit38633e797195643580ce5c4af7c5422aad3eb7de (patch)
tree0f8a3e876634084a95181349d4ffaa595160a92e
parentcf4595265e7703e1e9745a30f1dd265acbc075d3 (diff)
parentb241e2008e50f2d8e045642d6fd511a1af9bb52b (diff)
downloaddocker-22.06.0-beta.0.tar.gz
Merge pull request #43689 from thaJeztah/fix_incorrect_warningsv22.06.0-beta.0
daemon.NewDaemon(): fix network feature detection on first start
-rw-r--r--daemon/daemon.go17
-rw-r--r--daemon/daemon_unix.go4
-rw-r--r--daemon/daemon_unsupported.go4
-rw-r--r--daemon/daemon_windows.go4
4 files changed, 17 insertions, 12 deletions
diff --git a/daemon/daemon.go b/daemon/daemon.go
index c9aece54f8..bb09038b63 100644
--- a/daemon/daemon.go
+++ b/daemon/daemon.go
@@ -1005,13 +1005,15 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S
return nil, err
}
- sysInfo := d.RawSysInfo()
- for _, w := range sysInfo.Warnings {
- logrus.Warn(w)
- }
// Check if Devices cgroup is mounted, it is hard requirement for container security,
// on Linux.
- if runtime.GOOS == "linux" && !sysInfo.CgroupDevicesEnabled && !userns.RunningInUserNS() {
+ //
+ // Important: we call getSysInfo() directly here, without storing the results,
+ // as networking has not yet been set up, so we only have partial system info
+ // at this point.
+ //
+ // TODO(thaJeztah) add a utility to only collect the CgroupDevicesEnabled information
+ if runtime.GOOS == "linux" && !userns.RunningInUserNS() && !getSysInfo(d).CgroupDevicesEnabled {
return nil, errors.New("Devices cgroup isn't mounted")
}
@@ -1096,6 +1098,9 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S
close(d.startupDone)
info := d.SystemInfo()
+ for _, w := range info.Warnings {
+ logrus.Warn(w)
+ }
engineInfo.WithValues(
dockerversion.Version,
@@ -1487,7 +1492,7 @@ func (daemon *Daemon) RawSysInfo() *sysinfo.SysInfo {
// We check if sysInfo is not set here, to allow some test to
// override the actual sysInfo.
if daemon.sysInfo == nil {
- daemon.loadSysInfo()
+ daemon.sysInfo = getSysInfo(daemon)
}
})
diff --git a/daemon/daemon_unix.go b/daemon/daemon_unix.go
index 380d039804..7e1fc55347 100644
--- a/daemon/daemon_unix.go
+++ b/daemon/daemon_unix.go
@@ -1726,14 +1726,14 @@ func (daemon *Daemon) setupSeccompProfile() error {
return nil
}
-func (daemon *Daemon) loadSysInfo() {
+func getSysInfo(daemon *Daemon) *sysinfo.SysInfo {
var siOpts []sysinfo.Opt
if daemon.getCgroupDriver() == cgroupSystemdDriver {
if euid := os.Getenv("ROOTLESSKIT_PARENT_EUID"); euid != "" {
siOpts = append(siOpts, sysinfo.WithCgroup2GroupPath("/user.slice/user-"+euid+".slice"))
}
}
- daemon.sysInfo = sysinfo.New(siOpts...)
+ return sysinfo.New(siOpts...)
}
func (daemon *Daemon) initLibcontainerd(ctx context.Context) error {
diff --git a/daemon/daemon_unsupported.go b/daemon/daemon_unsupported.go
index b2a1b5be9b..b154c6c8f5 100644
--- a/daemon/daemon_unsupported.go
+++ b/daemon/daemon_unsupported.go
@@ -13,6 +13,6 @@ const platformSupported = false
func setupResolvConf(config *config.Config) {
}
-func (daemon *Daemon) loadSysInfo() {
- daemon.sysInfo = sysinfo.New()
+func getSysInfo(daemon *Daemon) *sysinfo.SysInfo {
+ return sysinfo.New()
}
diff --git a/daemon/daemon_windows.go b/daemon/daemon_windows.go
index 22f50e06d3..7acc06c7f7 100644
--- a/daemon/daemon_windows.go
+++ b/daemon/daemon_windows.go
@@ -598,8 +598,8 @@ func (daemon *Daemon) loadRuntimes() error {
func setupResolvConf(config *config.Config) {}
-func (daemon *Daemon) loadSysInfo() {
- daemon.sysInfo = sysinfo.New()
+func getSysInfo(daemon *Daemon) *sysinfo.SysInfo {
+ return sysinfo.New()
}
func (daemon *Daemon) initLibcontainerd(ctx context.Context) error {