diff --git a/cmd/dockerd/daemon.go b/cmd/dockerd/daemon.go index 45159eadd2..865579aa52 100644 --- a/cmd/dockerd/daemon.go +++ b/cmd/dockerd/daemon.go @@ -208,14 +208,10 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { return errors.Wrap(err, "failed to validate authorization plugin") } - // TODO: move into startMetricsServer() - if cli.Config.MetricsAddress != "" { - if !d.HasExperimental() { - return errors.Wrap(err, "metrics-addr is only supported when experimental is enabled") - } - if err := startMetricsServer(cli.Config.MetricsAddress); err != nil { - return err - } + cli.d = d + + if err := cli.startMetricsServer(cli.Config.MetricsAddress); err != nil { + return err } c, err := createAndStartCluster(cli, d) @@ -230,8 +226,6 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { logrus.Info("Daemon has completed initialization") - cli.d = d - routerOptions, err := newRouterOptions(cli.Config, d) if err != nil { return err diff --git a/cmd/dockerd/metrics.go b/cmd/dockerd/metrics.go index 20ceaf8466..1bfa37ea82 100644 --- a/cmd/dockerd/metrics.go +++ b/cmd/dockerd/metrics.go @@ -5,10 +5,19 @@ import ( "net/http" "github.com/docker/go-metrics" + "github.com/pkg/errors" "github.com/sirupsen/logrus" ) -func startMetricsServer(addr string) error { +func (cli *DaemonCli) startMetricsServer(addr string) error { + if addr == "" { + return nil + } + + if !cli.d.HasExperimental() { + return errors.New("metrics-addr is only supported when experimental is enabled") + } + if err := allocateDaemonPort(addr); err != nil { return err }