zoukankan      html  css  js  c++  java
  • docker 源码分析daemon1

    daomon 的main函数位于 cmd/dockerd/docker.go

    整个文件都比较简单

    func main() {
        if reexec.Init() {  //pkg/reexec/reexec.go   如果注册过initializer,则调用返回true,直接return,这里是false
            return
        }

        // Set terminal emulation based on platform as required.
        _, stdout, stderr := term.StdStreams()
        logrus.SetOutput(stderr)

        cmd := newDaemonCommand()   //新建一个cobra.command
        cmd.SetOutput(stdout)
        if err := cmd.Execute(); err != nil {   //执行
            fmt.Fprintf(stderr, "%s ", err)
            os.Exit(1)
        }
    }


    func newDaemonCommand() *cobra.Command {
        opts := daemonOptions{   //  新建 daemon的配置选项
            daemonConfig: config.New(),
            common:       cliflags.NewCommonOptions(),
        }

        cmd := &cobra.Command{   // 新建 一个 cobra.command
            Use:           "dockerd [OPTIONS]",
            Short:         "A self-sufficient runtime for containers.",
            SilenceUsage:  true,
            SilenceErrors: true,
            Args:          cli.NoArgs,
            RunE: func(cmd *cobra.Command, args []string) error {
                opts.flags = cmd.Flags()
                return runDaemon(opts)   // 执行函数为 runDaemon
            },
        }
        cli.SetupRootCommand(cmd)  // cli/cobra.go  同client 设置根命令

        flags := cmd.Flags()  // 新建一个flag
        flags.BoolVarP(&opts.version, "version", "v", false, "Print version information and quit")
        flags.StringVar(&opts.configFile, flagDaemonConfigFile, defaultDaemonConfigFile, "Daemon configuration file")
        opts.common.InstallFlags(flags)  //  cli/flags/common.go  同上,设置CommonOptions 里面的flag
        installConfigFlags(opts.daemonConfig, flags)  // 设置 daemonConfig 里面的flag
        installServiceFlags(flags)   //  设置 service相关的flag

        return cmd
    }

    与client不同的是daemon 的函数是区分操作系统的,runDaemon 下一节再分享

  • 相关阅读:
    luogu2394 yyy loves Chemistry I
    luogu2393 yyy loves Maths II
    2018年01月刷题学习日记
    luogu2590 [ZJOI2008]树的统计
    HDU 2087 剪花布条
    HDU 1686 Oulippo
    HDU 1711 Number Sequence(KMP模板)
    HDU 3336 Count the String(KMP+DP)
    UVa 1614 奇怪的股市
    UVa 12174 Shuffle(滑动窗口)
  • 原文地址:https://www.cnblogs.com/arwen-spy/p/6580178.html
Copyright © 2011-2022 走看看