Virtualbox 为什么boot2docker和转发到我的docker实例的端口会定期挂起?

Virtualbox 为什么boot2docker和转发到我的docker实例的端口会定期挂起?,virtualbox,osx-yosemite,boot2docker,Virtualbox,Osx Yosemite,Boot2docker,我已运行以下命令将sinatra和redis端口转发到运行在OSX上virtualbox中的docker实例: ports=( 4567 6379 ) for port in "${ports[@]}" do echo "Forwarding $port" VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcpport$port,tcp,,$port,,$port" done 但是,通过我的机器的公共IP定期(如每60秒)向这些docker实例中的

我已运行以下命令将sinatra和redis端口转发到运行在OSX上virtualbox中的docker实例:

ports=( 4567 6379 )
for port in "${ports[@]}"
do
echo "Forwarding $port"
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcpport$port,tcp,,$port,,$port"
done
但是,通过我的机器的公共IP定期(如每60秒)向这些docker实例中的任何一个发送来自我的机器的请求,将挂起40-60秒。但是,我的docker实例是健康的,我可以通过192.168.59.103直接连接

因此,为什么会出现以下连接:

redis-cli -h 192.168.1.1 PING
定期悬挂,但是

redis-cli -h 192.168.59.103 PING
总是工作吗?VirtualBox或boot2docker中是否存在某种缺陷

此外,在这些请求挂起的期间,我注意到

boot2docker ip

他们都被绞死了。我正在OSX 10.10.3上运行boot2docker 1.6.2和VirtualBox 4.3.28

额外的调试表明,实例间的连接现在也受到了损害。我链接了两个容器,它们之间的HTTP请求将定期挂起。我甚至运行了
telnet container\u name 4567
,然后键入

GET /

当然,这是测试Web服务器最基本的方法。从容器名称的内部,我运行了
curlhttp://localhost:4567/
。telnet请求挂起,但是
curlhttp://localhost:4567/
立即返回。

这是我们添加额外的仅本地主机接口(
192.168.59.103
)的主要原因之一-虚拟机bat端口转发非常糟糕且不可靠。

好的,明白了——感谢您提供此信息!听起来这可能是VirtualBox的一个(已知?)bug。
GET /