// daemon/daemon.go
1、func NewDaemon(cfg config.Config) *Daemon
- 调用containerStore, err := meta.NewStore(...)创建存储
- 调用containerd, err := ctrd.NewClient(ctrd.Config{...})构建containerd的client
- 最后,构建并返回&Daemon{}结构
// daemon/daemon.go
2、func (d *Daemon) Run() error
- 创建各种manager
- 用各种manager以及d.config构建server.Server{}并赋值给d.server
- 最后,调用d.server.Start()
// api/server/server.go
3、func (s *Server) Start() (err error)
- 调用router := initRoute(s)生成http请求的handler
- 遍历s.Config.Listen,其值默认为[]string{"unix:///var/run/pouchd.sock"},并调用l, err := getListener(one, tlsConfig)创建listener,并加入s.listeners中
- 最后,对每个listener生成一个goroutine,并调用errCh <- http.Server(l, router)