Docker源码阅读4-daemon流程

东西太多了,大体过了一下,感觉会少了很多东西。有一些三方库,也没去看库怎么用。就看函数名大体猜一下功能。 完全就是从main函数一步一步往下看,这种看法就是缺少一个大局的认识,开始会有很多不理解的做法。 cmd/dockerd/docker.go reexec.Init() 必须要提前调用的方法,用来初始化。如果初始化过了就会返回true,main函数也退出了。 判断是否调用过,就是看看registeredInitializers里有没有os.Args[0]的key。 如果有调用value,没有直接返回false,接着走main函数 具体value是个啥函数,慢慢看.里边还有个Register(函数用来往registeredInitializers里添加值。 cmd := newDaemonCommand() cmd.Execute() 这里一看就跟client的结构一样,突然就感觉好看多了。。 daemonOptions daemon.NewConfig() 返回一个Config,所有配置应该都在这,太多了,也看不到啥意思先过了。 cliflags.NewCommonOptions() 对应client TLS相关的东西,这里一样。 其他都一样。 opts.daemonConfig.InstallFlags(flags) 定义都有哪些参数,太多不看,在help命令里应该是有的。配置了对应的Config里边的字段。 看看return runDaemon(opts) daemonCli := NewDaemonCli() 返回一个DaemonCli type DaemonCli struct { *daemon.Config configFile *string flags *pflag.FlagSet api *apiserver.Server d *daemon.Daemon authzMiddleware *authorization.Middleware // authzMiddleware enables to dynamically reload the authorization plugins } err = daemonCli.start(opts) 这里流程就完了。详细看看start是干嘛的

上一篇:
下一篇:

相关文章:

Categories: 博客记录

0 Responses so far.

Leave a Reply