Docker 停留在 "Waiting for SSH to be available..."

Docker stuck on "Waiting for SSH to be available..."

我正在使用 docker 和 Windows 以及 Hyper-v 来创建容器。我在 docker 配置中添加了 docker 机器 vmachine。第一次创建机器时,它获得一个 IP(虽然我无法管理 nginx 来访问它 - ERR_CONNECTION_REFUSED)并完成启动。

当我关闭机器然后尝试启动它时,我卡在了这条消息中

正在等待 SSH 可用...

它不是从那里进化而来的。机器已启动,但是,当我输入命令 docker-machine ip vmachine 时,我得到了 IPv6,例如 - fe80::215:5dff:fe21:10b insted of a IPv4

我做错了什么?

这里的问题是默认 docker 使用 DockerNAT 网络交换机。您应该创建一个新的外部网络交换机。此问题已涵盖 here and here。您可以使用以下命令创建外部网络交换机

docker-machine create -d hyperv --hyperv-virtual-switch external-switch tempbox1

或者您可以通过 UI

创建一个

确保在创建外部开关后重启设备。

docker-machine.exe -debug create --driver hyperv --hyperv-virtual-switch "External Virtual Switch" --hyperv-cpu-count "1" - -hyperv-memory "1024" --hyperv-disk-size "20000" mydockervm

确保配置额外的 VirtualSwitch,选择外部网络驱动程序,卸载 virtualbox

使用调试开关查看确切的错误,对我来说它无法分配内存。

完成上述建议中提到的操作后,如果您是 运行 docker 在 windows 机器上尝试使用 cli 登录。这对我有用。

我遇到了类似的问题,但没有一个解决方案有效。事实证明,根据 this answer,docker 使用 Unix 特定元素启动 SSH。据说这在随后的版本中已修复,但我仍然遇到 'Waiting for SSH' 问题。我通过简单地使用 GIT bash 到 运行 所有 docker 相关的 SSH 命令解决了这个问题。

如果您正在使用命令提示符 Docker 将停留在等待 SSH 可用...,因此更改为使用 GIT BASH 正如@Dave Howson 所说的那样工作。

这是为我解决的问题。

原来 Windows 10 起始版本 1709 在 C:\Windows\System32\OpenSSH 有一个内置的 SSH 客户端。 Here 有一篇讨论它的文章。

看起来 docker 正在使用该 SSH 实现,但它不兼容。我没有在 Windows 10 中寻找合适的方法来删除内置的 SSH implementatino,并简单地重命名了该文件夹。这足以为我修复它。

使用开关--native-ssh

例如 docker-machine --native-ssh ....here

获取更多详细信息

如果您使用的是 Oracle VM,则必须首先确保您的新云虚拟机是 running

之前

之后: