// daemon/daemon.goapi
一、func NewDaemon(cfg config.Config) *Daemonunix
- 调用containerStore, err := meta.NewStore(...)建立存储
- 调用containerd, err := ctrd.NewClient(ctrd.Config{...})构建containerd的client
- 最后,构建并返回&Daemon{}结构
// daemon/daemon.gorouter
二、func (d *Daemon) Run() errorserver
- 建立各类manager
- 用各类manager以及d.config构建server.Server{}并赋值给d.server
- 最后,调用d.server.Start()
// api/server/server.goget
三、func (s *Server) Start() (err error)string
- 调用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)