func (sw Swarm) agent(server string, eng docker.Docker) (*engine.Container, error) { log.Debugf("Installing Swarm agent on node %s...\n", server) // Image img := engine.Image{Name: IMAGE} // Run name := "swarm_agent" port := "2375" ip := utils.AddrToIP(server) cmd := []string{ "join", "--addr", fmt.Sprintf("%s:%s", ip, port), fmt.Sprintf("etcd://%s/cluster", utils.SplitAddr(sw.Store.Addr())), } container := &engine.Container{ Name: name, Hostname: name, Image: img, IP: ip, Cmd: cmd, } if _, err := eng.GetImg(img.Name); err != nil { if _, err = eng.PullImg(img.Name); err != nil { return nil, err } } err := eng.Run(container) fmt.Println("Swarm agent running on node:", server) return container, err }