我正在运行Mac OS 10.9.5,我跟着https://docs.docker.com/installation/mac/安装了docker。 即使boot2docker VM在后台运行,我在运行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.15/images/search?term=ubuntu: dial tcp 192.168.59.103:2376: i/o timeout
我已经验证了docker在boot2docker vm中运行并且我的端口是正确的。
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
答案 0 :(得分:64)
我正在使用OSX Yosemite和Cisco Anyconnect(显然使用boot2docker这是一个糟糕的组合),以下内容终于为我工作了(感谢linked GitHub issue comment):
这些步骤将添加端口转发规则并修改您的环境,使docker指向127.0.0.1
(而不是192.168.59.103
或其他NATed IP。)
首先 - 需要安装boot2docker但不运行。
如果当前正在运行 - 请立即停止:
boot2docker down
添加规则以将来自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环境变量:
$(boot2docker shellinit)
覆盖DOCKER_HOST
变量以指向127.0.0.1
:
export DOCKER_HOST=tcp://127.0.0.1:2376
现在你应该可以运行docker命令了:
docker version
答案 1 :(得分:57)
我也有这个问题,这是临时解决方案。
首先,打开virtualbox并检查boot2docker vm上的网络设置,以查看host only
适配器的名称。就我而言,它是vboxnet1;对你来说,它可能是vboxnet0。
然后,应用此命令:
sudo route -nv add -net 192.168.59 -interface vboxnet1
现在你应该可以运行docker命令了。
有关详细信息,请参阅this issue
编辑:我注意到这个问题的一个共同点是cisco anyconnect(包括我),fwiw
答案 2 :(得分:45)
以下是我为解决问题所采取的措施(我使用OSX Yosemite并且接受的答案对我不起作用):
boot2docker delete
- 警告: 这会删除所有泊坞窗图片。 boot2docker init
boot2docker up
现在,Docker通过iTerm2从OS X命令行工作。
答案 3 :(得分:6)
这也发生在我身上,以上都没有解决问题。
今天,感谢同事的建议,我没有先启动我的VPN。我重新启动了我的机器,并从头开始使用docker。
boot2docker init
boot2docker up
$(boot2docker shellinit)
docker run hello-world
按预期工作!
我发现Florian Rosenberg的这个post很有用。我详细阅读了它,但我认为他在第一部分中提出的大部分内容已被考虑到最新版本的boot2docker中。但有点深刻的是“连接到VPN将破坏”。它的建议是寻找一个拒绝任何的防火墙规则。因此,如果没有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 delete 00411
我能够从OSX命令shell与docker交谈。
答案 4 :(得分:5)
好的,所以这也发生在我身上。
首先,设置环境变量是必要的。但是,之后,即使在那之后我仍然会收到i / o超时错误。
因此,我不是通过运行应用程序包(单击boot2docker图标)来启动boot2docker,而是从命令行启动它。
我第一次执行,
$boot2docker init
这就是说,VM已经在运行了。
然后我继续尝试启动它。
$boot2docker start
这开始了。
您可以通过运行
进行验证$boot2docker info
它会打印一个关于正在运行的实例的JSON。
然后,你可以进入它并运行
$boot2docker ssh
$docker run hello-world
那就是它。希望它有所帮助。
答案 5 :(得分:4)
运行Cisco AnyConnect后出现此问题。即使我关闭了AnyConnect,问题依然存在。 @ treehau5的答案有效,但对我来说也是boot2docker poweroff
,然后使用Activity Monitor,杀死AnyConnect留下的ciscod
。然后我打开一个新的终端窗口并正常启动boot2docker,然后docker命令工作正常。
答案 6 :(得分:3)
这对我来说很容易。我升级了virtualbox,这个问题就消失了。
答案 7 :(得分:2)
我尝试了treehau5方法,但它没有用。我改变了VirtualBox的boot2docker vm设置的网络设置 - 'host-only Adapter的混杂模式为'允许全部'
答案 8 :(得分:0)
我从VirtualBox首选项中删除了vboxnet0并初始化了第二个boot2docker vm(boot2docker --vm =&#34; boot2docker-vm2&#34; init)以使用正确的设置重新创建vboxnet0。在这之后,事情似乎恢复正常。
答案 9 :(得分:0)
当我遇到类似障碍时,这对我有用。确保您已升级VirtualBox,然后:
boot2docker stop
boot2docker init
boot2docker start; eval "$(boot2docker shellinit)"
然后,为了理智,请检查$DOCKER_HOST
是否匹配$(boot2docker ip)
。我怀疑我有很多事情要发生,就像我刚开始的时候一样,$DOCKER_HOST
已经不知何故了。
问题和一些讨论可以在GitHub问题页面here中找到 - 它看起来好像通常只是VirtualBox的一个例子。
答案 10 :(得分:-1)
您检查过DOCKER_HOST环境变量了吗?它应该指向
export DOCKER_HOST = tcp://192.168.59.103:2376
答案 11 :(得分:-1)
在我的情况下,我只需重新启动我的Mac主机,问题就消失了!我没有连接到VPN或任何类似的东西。我不确定发生这种情况的原因。