记录win7安装Docker for Windows(DockerToolbox)的一记大坑:wating for an ip....卡死 - Go语言中文社区

记录win7安装Docker for Windows(DockerToolbox)的一记大坑:wating for an ip....卡死


操作系统:windows7 x64
软件:Docker For Windows的DockerToolbox

问题

按照提示安装完成后,首次运行Docker Quickstart Terminal即画面永久定格在了wating for an ip....这一步
中断后发现名为“default”虚拟机已经在virtual box中成功创建且在运行中,但是docker-machine的ls、start、stop、ssh命令都无法正常完成

解决过程(本段为了让遇到同样问题的人能更容易搜索到,时间紧可直接跳到解决方案

起初一直停留在“wating for an ip....”这一表象上,以为是DHCP相关的问题,按此关键词Google查了N多资料无果

于是查阅help命令后开启了docker-machine的debug功能,及在每一条docker-machine命令后加上“--debug”参数

发现所有出错的地方都是SSH环节,错误信息:“SSH cmd err, output: exit status 255”

于是本机装了openssh,配置了环境变量,查了很多关于此条错误信息的资料,发现网上至今根本没有有效方案:

https://github.com/docker/machine/issues/2740

目光转向ip端口转发环节,查看virtual box的"default"虚拟机网络配置发现virtual box试图转发宿主机的50335端口(随机端口)到docker机的22端口,如图:

所以从virtual box直接双击登入“default”虚拟机,然后命令#ifconfig,记下虚拟机IP:192.168.99.100

宿主机(即windows)使用命令:ssh 192.168.99.100,发现可以正常连接并要求输密码,此处达到了目的所以直接中断命令

继续:ssh 127.0.0.1 -p 50335,提示错误:“ssh: connect to host 127.0.0.1 port 50335: Bad file number”。

至此高度怀疑是virtual box的端口转发在本系统中没有生效导致的问题,为了进一步验证这一猜想,利用windows自带的netsh手动配置端口转发:

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=50335 connectaddress=192.168.99.100 connectport=22

可以使用如下命令来确认设置生效:

netsh interface portproxy show all

最后执行:

docker-machine ssh default

发现终于看到了梦寐以求的开始界面,同时所有其余命令全部可用了:

至此问题成因确凿无疑,简单搜索就解决了Virtual Box转发不生效的问题:

https://blog.csdn.net/yanxiangyfg/article/details/51200807

首先撤销我们刚刚手动配置的转发:

netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=50335

最终解决方案

依次执行以下command然后重启电脑:

netsh winsock reset all
netsh int 6to4 reset all
netsh int ipv4 reset all
netsh int ipv6 reset all
netsh int httpstunnel reset all
netsh int isatap reset all
netsh int portproxy reset all
netsh int tcp reset all
netsh int teredo reset all

重启后一不注意又是一大坑:virtual box的转发只在管理员模式下生效,所以必须用管理员模式运行docker-machine命令,如果要用virtual box软件管理、查看docker虚拟机,virtual box也必须由管理员启动。

至此一切正常,大功告成!

WTF!两天的岁月就这么过去了,码这么多字一是为了记录,二是为了留下尽可能多的信息帮助遇到同样困惑的人搜索到此解决方案,坑多路长,各位同仁共勉。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/witmind/article/details/82858162
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-28 02:28:27
  • 阅读 ( 1459 )
  • 分类:docker

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢