Docker Swarm程式碼分析筆記(4)——swarm join

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

Docker Swarmjoin命令的定義:

    {        Name:      "join",        ShortName: "j",        Usage:     "Join a docker cluster",        Flags:     []cli.Flag{flJoinAdvertise, flHeartBeat, flTTL, flJoinRandomDelay, flDiscoveryOpt},        Action:    join,    },

flHeartBeat的預設值是60s,而flTTL預設值是180s:

flHeartBeat = cli.StringFlag{    Name:  "heartbeat",    Value: "60s",    Usage: "period between each heartbeat",}flTTL = cli.StringFlag{    Name:  "ttl",    Value: "180s",    Usage: "set the expiration of an ephemeral node",}

join函數的核心代碼:

......for {    log.WithFields(log.Fields{"addr": addr, "discovery": dflag}).Infof("Registering on the discovery service every %s...", hb)    if err := d.Register(addr); err != nil {        log.Error(err)    }    time.Sleep(hb)}......

token.Register函數實現:

func (s *Discovery) Register(addr string) error {    buf := strings.NewReader(addr)    resp, err := http.Post(fmt.Sprintf("%s/%s/%s?ttl=%d", s.url,        "clusters", s.token, uint64(s.ttl.Seconds())), "application/json", buf)    if err != nil {        return err    }    resp.Body.Close()    return nil}

join命令其實就是每隔heartbeat時間(例如,60s),向https://discovery.hub.docker.com/v1/clusters/token/ttl=180ttl取預設值),註冊一下當前Docker的地址(IP:PORT)。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.