diff --git a/drivers/virtualbox/virtualbox.go b/drivers/virtualbox/virtualbox.go index 80daf12a20..e2287c52ac 100644 --- a/drivers/virtualbox/virtualbox.go +++ b/drivers/virtualbox/virtualbox.go @@ -320,11 +320,42 @@ func (d *Driver) Create() error { log.Debugf("Adding key to authorized-keys.d...") - if err := drivers.AddPublicKeyToAuthorizedHosts(d, "/root/.docker/authorized-keys.d"); err != nil { + cmd, err := d.GetSSHCommand("sudo mkdir -p /var/lib/boot2docker/.docker && sudo chown -R docker /var/lib/boot2docker/.docker") + if err != nil { + return err + } + if err := cmd.Run(); err != nil { return err } - cmd, err := d.GetSSHCommand("sudo /etc/init.d/docker restart") + if err := drivers.AddPublicKeyToAuthorizedHosts(d, "/var/lib/boot2docker/.docker/authorized-keys.d"); 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 { + return err + } + if err := cmd.Run(); err != nil { + return err + } + + extraArgs := `EXTRA_ARGS='--auth=identity + --auth-authorized-dir=/var/lib/boot2docker/.docker/authorized-keys.d + --auth-known-hosts=/var/lib/boot2docker/.docker/known-hosts.json + --identity=/var/lib/boot2docker/.docker/key.json + -H tcp://0.0.0.0:2376'` + sshCmd := fmt.Sprintf("echo \"%s\" | sudo tee -a /var/lib/boot2docker/profile", extraArgs) + cmd, err = d.GetSSHCommand(sshCmd) + if err != nil { + return err + } + if err := cmd.Run(); err != nil { + return err + } + + cmd, err = d.GetSSHCommand("sudo /etc/init.d/docker restart") if err != nil { return err }