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.