首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Docker无法连接到boot2docker,因为TCP超时

Docker无法连接到boot2docker,因为TCP超时
EN

Stack Overflow用户
提问于 2014-11-01 13:07:03
回答 10查看 39.8K关注 0票数 64

我正在运行Mac OS 10.9.5 (小牛),我跟随https://docs.docker.com/installation/mac/安装了Docker。当我运行Docker时,即使boot2docker虚拟机在后台运行,我也会收到超时错误消息。

代码语言:javascript
复制
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.15/images/search?term=ubuntu: dial tcp 192.168.59.103:2376: i/o timeout

我已经验证了Docker正在boot2docker虚拟机中运行,并且我的端口是正确的。

代码语言:javascript
复制
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
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2014-11-07 23:33:53

我也遇到过这个问题,这里有一个临时的解决方案。

首先,打开VirtualBox并检查boot2docker VM上的网络设置,以查看host only适配器的名称。在我的例子中,它是vboxnet1;对于您来说,它可能是vboxnet0。

然后,应用以下命令:

代码语言:javascript
复制
sudo route -nv add -net 192.168.59 -interface vboxnet1

现在您应该能够运行Docker命令了。

有关详细信息,请参阅this issue

随着时间的推移,我注意到这个问题的一个共同点是Cisco anyconnect (包括我在内),这是值得的。

票数 57
EN

Stack Overflow用户

发布于 2015-01-07 02:24:27

我使用的是OS X v10.10 (Yosemite)和Cisco Anyconnect (这显然是使用boot2docker的糟糕组合),以下几点终于对我起作用了(感谢linked GitHub issue comment):

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

First -需要安装boot2docker,但不能运行。

如果它当前正在运行-立即停止它:

代码语言:javascript
复制
boot2docker down

添加规则以将流量从127.0.0.1:2376转发到boot2docker vm上的端口2376

代码语言:javascript
复制
vboxmanage modifyvm "boot2docker-vm" --natpf1 "docker,tcp,127.0.0.1,2376,,2376"

启动boot2docker:

代码语言:javascript
复制
boot2docker up

设置默认DOCKER环境变量:

代码语言:javascript
复制
$(boot2docker shellinit)

覆盖指向127.0.0.1DOCKER_HOST变量

代码语言:javascript
复制
export DOCKER_HOST=tcp://127.0.0.1:2376

现在您应该能够运行docker命令了:

代码语言:javascript
复制
docker version
票数 64
EN

Stack Overflow用户

发布于 2014-11-14 00:30:10

这也发生在我身上,之前的答案都没有解决这个问题。

今天,多亏了一个同事的建议,我没有先启动我的VPN连接。我重新启动了我的机器,并从头开始使用Docker。

代码语言:javascript
复制
boot2docker init
boot2docker up
$(boot2docker shellinit)
docker run hello-world

它像预期的那样工作!

我发现Florian Rosenberg的this post很有用。我仔细阅读了这篇文章,但我认为他在第一部分中提出的大部分建议已经被纳入最新版本的boot2docker中。但最有见地的是“连接到VPN,一切都会崩溃”。

它建议寻找拒绝任何对任何的防火墙规则。因此,在没有启动VPN的情况下,我寻找了这个规则,但它不在那里。果然,一旦我启动了我的VPN,我得到了以下(不同的)错误...

代码语言:javascript
复制
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

我检查了防火墙规则,果然添加了一个新规则...

代码语言:javascript
复制
sudo ipfw -a list | grep "deny ip"
00411    1      64 deny ip from any to any 

一旦我使用以下命令删除该防火墙规则:

代码语言:javascript
复制
sudo ipfw delete 00411

我能够从OS和X命令shell中与Docker对话。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26686358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档