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)
相关文章
相关标签/搜索