@@ -40,34 +40,51 @@ func cmdUp() error {
4040 return fmt .Errorf ("Failed to start machine %q (run again with -v for details)" , B2D .VM )
4141 }
4242
43- fmt .Println ("Waiting for VM to be started ..." )
43+ fmt .Println ("Waiting for VM and Docker daemon to start ..." )
4444 //give the VM a little time to start, so we don't kill the Serial Pipe/Socket
4545 time .Sleep (600 * time .Millisecond )
4646 natSSH := fmt .Sprintf ("localhost:%d" , m .GetSSHPort ())
4747 IP := ""
4848 for i := 1 ; i < 30 ; i ++ {
49+ print ("." )
4950 if B2D .Serial && runtime .GOOS != "windows" {
50- if IP = RequestIPFromSerialPort (m .GetSerialFile ()); IP != "" {
51+ if IP , err = RequestIPFromSerialPort (m .GetSerialFile ()); err == nil {
5152 break
5253 }
5354 }
54- if err := read (natSSH , 1 , 2 * time .Second ); err == nil {
55- IP = RequestIPFromSSH (m )
56- break
55+ if err := read (natSSH , 1 , 300 * time .Millisecond ); err == nil {
56+ if IP , err = RequestIPFromSSH (m ); err == nil {
57+ break
58+ }
5759 }
60+ }
61+ if B2D .Verbose {
62+ fmt .Printf ("VM Host-only IP address: %s" , IP )
63+ fmt .Printf ("\n Waiting for Docker daemon to start...\n " )
64+ }
5865
66+ time .Sleep (300 * time .Millisecond )
67+ socket := ""
68+ for i := 1 ; i < 30 ; i ++ {
5969 print ("." )
70+ if socket , err = RequestSocketFromSSH (m ); err == nil {
71+ break
72+ }
73+ if B2D .Verbose {
74+ fmt .Printf ("Error requesting socket: %s\n " , err )
75+ }
76+ time .Sleep (300 * time .Millisecond )
6077 }
61- print ( " \n " )
78+ fmt . Printf ( " \n Started. \n " )
6279
63- fmt .Printf ("Started.\n " )
64-
65- if IP == "" {
80+ if socket == "" {
6681 // lets try one more time
6782 time .Sleep (600 * time .Millisecond )
68- fmt .Printf (" Trying to get IP one more time\n " )
83+ fmt .Printf (" Trying to get Docker socket one more time\n " )
6984
70- IP = RequestIPFromSSH (m )
85+ if socket , err = RequestSocketFromSSH (m ); err != nil {
86+ fmt .Printf ("Error requesting socket: %s\n " , err )
87+ }
7188 }
7289 // Copying the certs here - someone might have have written a Windows API client.
7390 certPath , err := RequestCertsUsingSSH (m )
@@ -81,12 +98,11 @@ func cmdUp() error {
8198 fmt .Printf (" \" %s\" ssh\n " , os .Args [0 ])
8299 fmt .Printf ("to SSH into the VM instead.\n " )
83100 default :
84- if IP == "" {
85- fmt .Fprintf (os .Stderr , "Auto detection of the VM's IP address failed.\n " )
101+ if socket == "" {
102+ fmt .Fprintf (os .Stderr , "Auto detection of the VM's Docker socket failed.\n " )
86103 fmt .Fprintf (os .Stderr , "Please run `boot2docker -v up` to diagnose.\n " )
87104 } else {
88105 // Check if $DOCKER_HOST ENV var is properly configured.
89- socket := RequestSocketFromSSH (m )
90106 if os .Getenv ("DOCKER_HOST" ) != socket || os .Getenv ("DOCKER_CERT_PATH" ) != certPath {
91107 fmt .Printf ("\n To connect the Docker client to the Docker daemon, please set:\n " )
92108 printExport (socket , certPath )
@@ -110,7 +126,10 @@ func cmdShellInit() error {
110126 return fmt .Errorf ("VM %q is not running." , B2D .VM )
111127 }
112128
113- socket := RequestSocketFromSSH (m )
129+ socket , err := RequestSocketFromSSH (m )
130+ if err != nil {
131+ return fmt .Errorf ("Error requesting socket: %s\n " , err )
132+ }
114133
115134 certPath , err := RequestCertsUsingSSH (m )
116135 if err != nil && B2D .Verbose {
@@ -270,7 +289,10 @@ func cmdSocket() error {
270289 return fmt .Errorf ("VM %q is not running." , B2D .VM )
271290 }
272291
273- socket := RequestSocketFromSSH (m )
292+ socket , err := RequestSocketFromSSH (m )
293+ if err != nil {
294+ return fmt .Errorf ("Error requesting socket: %s\n " , err )
295+ }
274296
275297 fmt .Fprintf (os .Stderr , "\n \t export DOCKER_HOST=" )
276298 fmt .Printf ("%s" , socket )
@@ -316,17 +338,21 @@ func cmdIP() error {
316338
317339 IP := ""
318340 if B2D .Serial {
319- for i := 1 ; i < 20 ; i ++ {
320- if runtime . GOOS != "windows" {
321- if IP = RequestIPFromSerialPort ( m . GetSerialFile ()); IP != "" {
322- break
341+ if runtime . GOOS != "windows" {
342+ if IP , err = RequestIPFromSerialPort ( m . GetSerialFile ()); err != nil {
343+ if B2D . Verbose {
344+ fmt . Printf ( "Error getting IP via Serial: %s \n " , err )
323345 }
324346 }
325347 }
326348 }
327349
328350 if IP == "" {
329- IP = RequestIPFromSSH (m )
351+ if IP , err = RequestIPFromSSH (m ); err != nil {
352+ if B2D .Verbose {
353+ fmt .Printf ("Error getting IP via SSH: %s\n " , err )
354+ }
355+ }
330356 }
331357 if IP != "" {
332358 fmt .Fprintf (os .Stderr , "\n The VM's Host only interface IP address is: " )
0 commit comments