github.com/jwhonce/docker@v0.6.7-0.20190327063223-da823cf3a5a3/cmd/dockerd/docker.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/docker/docker/cli" 8 "github.com/docker/docker/daemon/config" 9 "github.com/docker/docker/dockerversion" 10 "github.com/docker/docker/pkg/jsonmessage" 11 "github.com/docker/docker/pkg/reexec" 12 "github.com/docker/docker/pkg/term" 13 "github.com/moby/buildkit/util/apicaps" 14 "github.com/sirupsen/logrus" 15 "github.com/spf13/cobra" 16 ) 17 18 func newDaemonCommand() (*cobra.Command, error) { 19 opts := newDaemonOptions(config.New()) 20 21 cmd := &cobra.Command{ 22 Use: "dockerd [OPTIONS]", 23 Short: "A self-sufficient runtime for containers.", 24 SilenceUsage: true, 25 SilenceErrors: true, 26 Args: cli.NoArgs, 27 RunE: func(cmd *cobra.Command, args []string) error { 28 opts.flags = cmd.Flags() 29 return runDaemon(opts) 30 }, 31 DisableFlagsInUseLine: true, 32 Version: fmt.Sprintf("%s, build %s", dockerversion.Version, dockerversion.GitCommit), 33 } 34 cli.SetupRootCommand(cmd) 35 36 flags := cmd.Flags() 37 flags.BoolP("version", "v", false, "Print version information and quit") 38 defaultDaemonConfigFile, err := getDefaultDaemonConfigFile() 39 if err != nil { 40 return nil, err 41 } 42 flags.StringVar(&opts.configFile, "config-file", defaultDaemonConfigFile, "Daemon configuration file") 43 opts.InstallFlags(flags) 44 if err := installConfigFlags(opts.daemonConfig, flags); err != nil { 45 return nil, err 46 } 47 installServiceFlags(flags) 48 49 return cmd, nil 50 } 51 52 func init() { 53 if dockerversion.ProductName != "" { 54 apicaps.ExportedProduct = dockerversion.ProductName 55 } 56 } 57 58 func main() { 59 if reexec.Init() { 60 return 61 } 62 63 // initial log formatting; this setting is updated after the daemon configuration is loaded. 64 logrus.SetFormatter(&logrus.TextFormatter{ 65 TimestampFormat: jsonmessage.RFC3339NanoFixed, 66 FullTimestamp: true, 67 }) 68 69 // Set terminal emulation based on platform as required. 70 _, stdout, stderr := term.StdStreams() 71 72 initLogging(stdout, stderr) 73 74 onError := func(err error) { 75 fmt.Fprintf(stderr, "%s\n", err) 76 os.Exit(1) 77 } 78 79 cmd, err := newDaemonCommand() 80 if err != nil { 81 onError(err) 82 } 83 cmd.SetOutput(stdout) 84 if err := cmd.Execute(); err != nil { 85 onError(err) 86 } 87 }