我正在使用带有Windows和Hyper-v的docker来创建容器。我在docker配置中添加了一个docker machine vmachine 。第一次创建机器时,它会获得一个IP(虽然我无法管理nginx来访问它 - ERR_CONNECTION_REFUSED)并完成启动。
当我关闭机器然后尝试启动它时,我会卡在这条消息中
等待SSH可用...
它并没有从那里发展。机器已启动,但是,当我输入命令docker-machine ip vmachine
时,我得到了一个IPv6,例如 - fe80::215:5dff:fe21:10b
insted一个IPv4
我做错了什么?
答案 0 :(得分:7)
此处出现问题默认情况下,docker使用DockerNAT
网络交换机。您应该创建一个新的外部网络交换机。此问题已涵盖here和here。您可以使用以下命令
docker-machine create -d hyperv --hyperv-virtual-switch external-switch tempbox1
或者您可以通过UI创建一个
创建外部开关后,务必重新启动设备。
答案 1 :(得分:1)
我遇到了类似的问题,但没有解决方案。事实证明,根据this answer,docker使用Unix特定元素启动SSH。据说此问题已在随后的发行版中修复,但是我仍然遇到“等待SSH”的问题。我只需使用GIT bash运行所有与docker相关的SSH命令即可解决此问题。
答案 2 :(得分:0)
docker-machine.exe -debug create --driver hyperv --hyperv-virtual-switch“External Virtual Switch”--hyperv-cpu-count“1”--hyperv-memory“1024” - high -v-disk -size“20000”mydockervm
确保在选择了外部网络驱动程序的情况下进行其他VirtualSwitch配置,卸载virtualbox
使用调试开关查看确切的错误,对我来说,它无法分配内存。
答案 3 :(得分:0)
完成上述建议中所述的操作后,如果您在Windows计算机上运行docker,请尝试使用cli登录。这对我有用。
答案 4 :(得分:0)
如果您使用的是Command Promt,则Docker将停留在等待SSH可用的状态,...因此请更改为使用GIT BASH,如@Dave Howson所说的那样。
答案 5 :(得分:0)
这是为我解决的问题。
结果证明Windows 10起始版本1709在C:\ Windows \ System32 \ OpenSSH处具有内置的SSH客户端。 Here是一篇讨论它的文章。
看起来docker正在使用该SSH实现,并且不兼容。我没有找到在Windows 10中删除内置SSH实施工具的正确方法,而只是重命名了该文件夹。足以为我修复它。
答案 6 :(得分:0)
使用开关--native-ssh
例如docker-machine --native-ssh ....
从here获取更多详细信息
答案 7 :(得分:0)