Docker can't connect to boot2docker because of TCP timeout

I am using OS X v10.10 (Yosemite) and Cisco Anyconnect (which are apparently a bad combination for using boot2docker), and the following finally worked for me (thanks to the linked GitHub issue comment):

These steps will add a port forwarding rule and modify your environment to have Docker point to 127.0.0.1 (instead of 192.168.59.103 or other NATed IP address).

First - boot2docker needs to be installed, but not running.

If it is currently running - stop it now:

boot2docker down

Add a rule to forward traffic from 127.0.0.1:2376 to port 2376 on the boot2docker vm:

vboxmanage modifyvm "boot2docker-vm" --natpf1 "docker,tcp,127.0.0.1,2376,,2376"

Start boot2docker:

boot2docker up

Set default DOCKER environment variables:

$(boot2docker shellinit)

Override the DOCKER_HOST variable to point to 127.0.0.1:

export DOCKER_HOST=tcp://127.0.0.1:2376

Now you should be able to run docker commands:

docker version

I have had this issue as well and here is a temporary solution.

First, open VirtualBox and check the network settings on the boot2docker VM to see what the host only adapter is named. In my case, it's vboxnet1; for you, it may be vboxnet0.

Then, apply this command:

sudo route -nv add -net 192.168.59 -interface vboxnet1

Now you should be able to run Docker commands.

See this issue for more information.

I am noticing over time that a common denominator in this problem is Cisco anyconnect (me included), for what it's worth.


Here's what I did to fix the issue (I use OS X v10.10 (Yosemite) and the accepted answer didn't work for me):

  • boot2docker delete - Warning: this deletes all your Docker images.
  • In VirtualBox, go to VirtualBox (menu) → Preferences → Network → Host Only Networks
    • Delete the host only networks, and then I re-added them
  • boot2docker init
  • boot2docker up

Now Docker works from the OS X command line via iTerm2 for me.