Docker Swarm
的create
命令代码很简单:
func create(c *cli.Context) {
if len(c.Args()) != 0 {
log.Fatalf("the `create` command takes no arguments. See '%s create --help'.", c.App.Name)
}
discovery := &token.Discovery{}
discovery.Initialize("", 0, 0, nil)
token, err := discovery.CreateCluster()
if err != nil {
log.Fatal(err)
}
fmt.Println(token)
}
而token.CreateCluster()
函数的实现:
// CreateCluster returns a unique cluster token
func (s *Discovery) CreateCluster() (string, error) {
resp, err := http.Post(fmt.Sprintf("%s/%s", s.url, "clusters"), "", nil)
if err != nil {
return "", err
}
defer resp.Body.Close()
token, err := ioutil.ReadAll(resp.Body)
return string(token), err
}
其实就是向https://discovery.hub.docker.com/v1/clusters
发送一个https post
请求,然后得到唯一的一个token
,利用这个token
来创建和管理cluster
。
有疑问加站长微信联系(非本文作者)