由于tcp超时,docker无法连接到boot2docker

我正在运行Mac OS 10.9.5,我已经按照https://docs.docker.com/installation/mac/来安装docker。 即使boot2docker虚拟机正在后台运行,运行docker时也会收到超时错误消息。

nikhil@macbook ~> boot2docker status running nikhil@macbook ~> boot2docker ip The VM's Host only interface IP address is: 192.168.59.103 nikhil@macbook ~> docker run hello-world 2014/11/01 01:01:31 Post https://192.168.59.103:2376/v1.15/containers/create: dial tcp 192.168.59.103:2376: i/o timeout nikhil@macbook ~> docker search ubuntu 2014/11/01 01:02:40 Get https://192.168.59.103:2376/v1.15http://img.dovov.comsearch?term=ubuntu: dial tcp 192.168.59.103:2376: i/o timeout 

我已经validationdocker运行在boot2docker虚拟机内,并且我的端口是正确的。

 nikhil@macbook ~> boot2docker ssh ## . ## ## ## == ## ## ## ## === /""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| Boot2Docker version 1.3.1, build master : 9a31a68 - Fri Oct 31 03:14:34 UTC 2014 Docker version 1.3.1, build 4e9bbfa docker@boot2docker:~$ sudo netstat -ntpl | grep docker tcp 0 0 :::2376 :::* LISTEN 629/docker 

我也有这个问题,这里是临时解决scheme。

首先,打开virtualbox并检查boot2docker vm上的networking设置,以查看host only命名host only适配器的内容。 在我的情况下,这是vboxnet1; 对于你来说,可能是vboxnet0。

然后,应用这个命令:

 sudo route -nv add -net 192.168.59 -interface vboxnet1 

现在你应该可以运行docker命令了。

请参阅此问题以获取更多信息

编辑 :我注意到随着时间的推移,在这个问题的共同点是cisco anyconnect(包括我),fwiw

我正在使用OSX Yosemite和Cisco Anyconnect(这显然是使用boot2docker的一个糟糕的组合),下面的内容终于为我工作了(感谢链接的GitHub问题评论 ):

这些步骤将添加一个端口转发规则并修改您的环境,以使docker指向127.0.0.1 (而不是192.168.59.103或其他NATed IP)。

首先 – boot2docker需要安装,但不能运行。

如果它正在运行 – 现在停止它:

 boot2docker down 

添加一条规则,将stream量从127.0.0.1:2376转发到boot2docker vm上的端口2376

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

启动boot2docker:

 boot2docker up 

设置默认的DOCKER环境variables:

 $(boot2docker shellinit) 

重写DOCKER_HOSTvariables指向127.0.0.1

 export DOCKER_HOST=tcp://127.0.0.1:2376 

现在你应该可以运行docker命令了:

 docker version 

这是我做了什么来解决这个问题(我使用OSX优胜美地和接受的答案不适合我):

  • boot2docker delete警告:这将删除所有泊坞窗图像。
  • 在Virtualbox中,进入VirtualBox(菜单)=> Preferences => Network => Host Only Networks
    • 删除主机只有networking,然后我重新添加它们
  • boot2docker init
  • boot2docker up

现在,Docker通过iTerm2从OS X命令行工作。

这也发生在我身上,上述都没有解决问题。

今天,感谢同事们的build议,我没有先启动我的VPN。 我重新启动了我的机器,并从docker开始。

 boot2docker init boot2docker up $(boot2docker shellinit) docker run hello-world 

按预期工作!

我发现Florian Rosenberg的这篇文章很有用。 我详细地阅读了这篇文章,但是我认为他在第一部分提出的大部分内容已经被包含在最新版本的boot2docker中。 但有点洞察力的是“连接到VPN的东西将打破”。 它build议的是寻找一个拒绝任何的防火墙规则。 所以,没有VPN启动,我寻找这个规则,而不是在那里。 果然,一旦我启动了我的VPN,我得到了以下(不同)的错误…

 docker run hello-world 2014/11/13 11:11:18 Post https://192.168.59.103:2376/v1.15/containers/create: dial tcp 192.168.59.103:2376: permission denied 

我检查了防火墙规则,果然新增了一条规则… sudo ipfw -a list | grep“deny ip”00411 1 64从任何地方拒绝ip

一旦我删除了防火墙规则:sudo ipfw删除00411

我能够从OSX命令shell中与docker交谈。

好的,所以这也发生在我身上。

首先,设置环境variables是必要的。 但是,之后,我仍然得到了I / O超时错误。

因此,我不是通过运行应用程序包(单击boot2docker图标)来启动boot2docker,而是从命令行启动它。

我第一次执行,

 $boot2docker init 

这就是说,虚拟机已经在运行了。

然后我继续尝试着开始。

 $boot2docker start 

这开始了。

您可以通过运行来validation它

 $boot2docker info 

它打印一个关于你的运行实例的JSON。

然后,你可以ssh进入并运行

 $boot2docker ssh $docker run hello-world 

而已。 希望能帮助到你。

运行Cisco AnyConnect后,我遇到了这个问题。 即使在closuresAnyConnect之后,问题仍然存在。 @ treehau5的答案是有效的,但是对我来说也是一样,就是boot2docker poweroff ,然后使用Activity Monitor,杀掉AnyConnect留下的ciscod 。 然后我打开一个新的terminal窗口,并正常启动boot2docker,然后docker命令正常工作。

这对我来说很简单。 我升级了virtualbox,这个问题就消失了。

我试过treehau5的方法,但没有奏效。 我改变了VirtualBox的networking设置boot2docker虚拟机设置 – “主机专用适配器的混杂模式为'全部允许'

我从VirtualBox首选项中删除了vboxnet0,并初始化了第二个boot2docker vm(boot2docker –vm =“boot2docker-vm2”init),以正确的设置重新创build了vboxnet0。 此后事情似乎恢复正常。

当我遇到类似的障碍时,这是我的工作。 确保你已经升级了VirtualBox,然后:

  1. boot2docker stop
  2. boot2docker init
  3. boot2docker start; eval "$(boot2docker shellinit)"

然后,为了理智,检查$DOCKER_HOST$(boot2docker ip)匹配。 我怀疑我有很多事情正在进行,因为当我第一次开始时, $DOCKER_HOST已经变成未设置。

这个问题和一些讨论可以在这里的GitHub问题页面中find – 它看起来好像经常只是一个VirtualBox的情况下。

你有没有检查你的DOCKER_HOST环境variables? 它应该指向

export DOCKER_HOST = tcp://192.168.59.103:2376

在我的情况下,我只需要重新启动我的Mac主机,问题就没有了! 我没有连接到VPN或任何types的。 我不确定发生这种情况的原因。