// 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)