Merge pull request #266 from ehazlett/tls-check

fixes #229: wait for docker before adding to known_hosts
This commit is contained in:
Ben Firshman 2015-01-14 13:52:47 +00:00
commit 9a2f8ca748
2 changed files with 27 additions and 1 deletions

View File

@ -332,6 +332,14 @@ func (d *Driver) Create() error {
return err
}
cmd, err = d.GetSSHCommand("if [ -e /var/run/docker.pid ]; then sudo /etc/init.d/docker stop; fi")
if err != nil {
return err
}
if err := cmd.Run(); err != nil {
return err
}
// HACK: configure docker to use persisted auth
cmd, err = d.GetSSHCommand("echo DOCKER_TLS=no | sudo tee -a /var/lib/boot2docker/profile")
if err != nil {
@ -355,7 +363,7 @@ func (d *Driver) Create() error {
return err
}
cmd, err = d.GetSSHCommand("sudo /etc/init.d/docker restart")
cmd, err = d.GetSSHCommand("sudo /etc/init.d/docker start")
if err != nil {
return err
}

18
host.go
View File

@ -6,6 +6,7 @@ import (
"encoding/json"
"fmt"
"io/ioutil"
"net"
"net/url"
"os"
"path/filepath"
@ -33,6 +34,19 @@ type hostConfig struct {
DriverName string
}
func waitForDocker(addr string) error {
for {
conn, err := net.DialTimeout("tcp", addr, time.Second*5)
if err != nil {
time.Sleep(time.Second * 5)
continue
}
conn.Close()
break
}
return nil
}
func NewHost(name, driverName, storePath string) (*Host, error) {
driver, err := drivers.NewDriver(driverName, storePath)
if err != nil {
@ -156,6 +170,10 @@ func (h *Host) addHostToKnownHosts() error {
tlsConfig.InsecureSkipVerify = true
log.Debugf("waiting for Docker to become available on %s", addr)
if err := waitForDocker(addr); err != nil {
return fmt.Errorf("unable to connect to Docker daemon: %s", err)
}
testConn, err := tls.Dial(proto, addr, tlsConfig)
if err != nil {
return fmt.Errorf("tls Handshake error: %s", err)