diff --git a/cmd/dockerd/daemon.go b/cmd/dockerd/daemon.go index 56f88c49be..7e8049c80d 100644 --- a/cmd/dockerd/daemon.go +++ b/cmd/dockerd/daemon.go @@ -103,7 +103,7 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { system.InitLCOW(cli.Config.Experimental) if err := setDefaultUmask(); err != nil { - return fmt.Errorf("Failed to set umask: %v", err) + return err } // Create the daemon root before we create ANY other files (PID, or migrate keys) @@ -119,7 +119,7 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { if cli.Pidfile != "" { pf, err := pidfile.New(cli.Pidfile) if err != nil { - return fmt.Errorf("Error starting daemon: %v", err) + return errors.Wrap(err, "failed to start daemon") } defer func() { if err := pf.Remove(); err != nil { @@ -130,13 +130,13 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { serverConfig, err := newAPIServerConfig(cli) if err != nil { - return fmt.Errorf("Failed to create API server: %v", err) + return errors.Wrap(err, "failed to create API server") } cli.api = apiserver.New(serverConfig) hosts, err := loadListeners(cli, serverConfig) if err != nil { - return fmt.Errorf("Failed to load listeners: %v", err) + return errors.Wrap(err, "failed to load listeners") } ctx, cancel := context.WithCancel(context.Background()) @@ -144,13 +144,13 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { opts, err := cli.getContainerdDaemonOpts() if err != nil { cancel() - return fmt.Errorf("Failed to generate containerd options: %v", err) + return errors.Wrap(err, "failed to generate containerd options") } r, err := supervisor.Start(ctx, filepath.Join(cli.Config.Root, "containerd"), filepath.Join(cli.Config.ExecRoot, "containerd"), opts...) if err != nil { cancel() - return fmt.Errorf("Failed to start containerd: %v", err) + return errors.Wrap(err, "failed to start containerd") } cli.Config.ContainerdAddr = r.Address() @@ -176,20 +176,20 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { d, err := daemon.NewDaemon(ctx, cli.Config, pluginStore) if err != nil { - return fmt.Errorf("Error starting daemon: %v", err) + return errors.Wrap(err, "failed to start daemon") } d.StoreHosts(hosts) // validate after NewDaemon has restored enabled plugins. Dont change order. if err := validateAuthzPlugins(cli.Config.AuthorizationPlugins, pluginStore); err != nil { - return fmt.Errorf("Error validating authorization plugin: %v", err) + return errors.Wrap(err, "failed to validate authorization plugin") } // TODO: move into startMetricsServer() if cli.Config.MetricsAddress != "" { if !d.HasExperimental() { - return fmt.Errorf("metrics-addr is only supported when experimental is enabled") + return errors.Wrap(err, "metrics-addr is only supported when experimental is enabled") } if err := startMetricsServer(cli.Config.MetricsAddress); err != nil { return err @@ -243,7 +243,7 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { cancel() if errAPI != nil { - return fmt.Errorf("Shutting down due to ServeAPI error: %v", errAPI) + return errors.Wrap(errAPI, "shutting down due to ServeAPI error") } return nil @@ -412,14 +412,14 @@ func loadDaemonCliConfig(opts *daemonOptions) (*config.Config, error) { } if flags.Changed("graph") && flags.Changed("data-root") { - return nil, fmt.Errorf(`cannot specify both "--graph" and "--data-root" option`) + return nil, errors.New(`cannot specify both "--graph" and "--data-root" option`) } if opts.configFile != "" { c, err := config.MergeDaemonConfigurations(conf, flags, opts.configFile) if err != nil { if flags.Changed("config-file") || !os.IsNotExist(err) { - return nil, fmt.Errorf("unable to configure the Docker daemon with file %s: %v", opts.configFile, err) + return nil, errors.Wrapf(err, "unable to configure the Docker daemon with file %s", opts.configFile) } } // the merged configuration can be nil if the config file didn't exist. @@ -592,7 +592,7 @@ func loadListeners(cli *DaemonCli, serverConfig *apiserver.Config) ([]string, er for i := 0; i < len(cli.Config.Hosts); i++ { var err error if cli.Config.Hosts[i], err = dopts.ParseHost(cli.Config.TLS, cli.Config.Hosts[i]); err != nil { - return nil, fmt.Errorf("error parsing -H %s : %v", cli.Config.Hosts[i], err) + return nil, errors.Wrapf(err, "error parsing -H %s", cli.Config.Hosts[i]) } protoAddr := cli.Config.Hosts[i] diff --git a/integration-cli/docker_cli_daemon_test.go b/integration-cli/docker_cli_daemon_test.go index edb2a7b6c9..dae4c9dc0d 100644 --- a/integration-cli/docker_cli_daemon_test.go +++ b/integration-cli/docker_cli_daemon_test.go @@ -570,7 +570,7 @@ func (s *DockerDaemonSuite) TestDaemonExitOnFailure(c *check.C) { c.Fatalf("Expected daemon not to start, got %v", err) } // look in the log and make sure we got the message that daemon is shutting down - icmd.RunCommand("grep", "Error starting daemon", s.d.LogFileName()).Assert(c, icmd.Success) + icmd.RunCommand("grep", "failed to start daemon", s.d.LogFileName()).Assert(c, icmd.Success) } else { //if we didn't get an error and the daemon is running, this is a failure c.Fatal("Conflicting options should cause the daemon to error out with a failure") diff --git a/internal/test/daemon/daemon.go b/internal/test/daemon/daemon.go index 8c04c3158f..b526ca8354 100644 --- a/internal/test/daemon/daemon.go +++ b/internal/test/daemon/daemon.go @@ -201,7 +201,7 @@ func (d *Daemon) Start(t testingT, args ...string) { ht.Helper() } if err := d.StartWithError(args...); err != nil { - t.Fatalf("Error starting daemon with arguments %v : %v", args, err) + t.Fatalf("failed to start daemon with arguments %v : %v", args, err) } }