pouch架構源碼分析

// 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)
相關文章
相關標籤/搜索