【问题标题】:Docker stuck on "Waiting for SSH to be available..."Docker 停留在“等待 SSH 可用......”
【发布时间】:2017-03-16 10:34:52
【问题描述】:

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

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

等待 SSH 可用...

它并没有从那里进化。机器已启动,但是,当我输入命令 docker-machine ip vmachine like - fe80::215:5dff:fe21:10b insted of a IPv4 时,我得到一个 IPv6

我做错了什么?

【问题讨论】:

  • 您是否特别期待 IPv4 地址?不能用 IPv6 地址吗?
  • 虽然我发现使用 IPv4 更容易,但这不是问题,而是结果...问题是它卡在 Waiting for SSH to be available...

标签: windows docker hyper-v docker-machine


【解决方案1】:

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

之前

之后

【讨论】:

    【解决方案2】:

    使用开关--native-ssh

    例如docker-machine --native-ssh ....here获取更多详细信息

    【讨论】:

      【解决方案3】:

      这就是为我解决的问题。

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

      看起来 docker 正在使用该 SSH 实现并且它不兼容。我没有寻找删除 Windows 10 中内置 SSH 实现的正确方法,只是重命名了该文件夹。这对我来说已经足够了。

      【讨论】:

      • 它对我有用。对我来说,我在 wsl2 中运行 docker-machine.exe。
      【解决方案4】:

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

      【讨论】:

      • 这应该是评论@Gary
      【解决方案5】:

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

      【讨论】:

      • 它对我有用。使用 gitbash 不会卡在步骤“Waiting for SSH to be available…”
      【解决方案6】:

      完成上述建议后,如果您在 Windows 机器上运行 docker,请尝试使用 cli 登录。这对我有用。

      【讨论】:

        【解决方案7】:

        docker-machine.exe -debug create --driver hyperv --hyperv-virtual-switch "外部虚拟交换机" --hyperv-cpu-count "1" --hyperv-memory "1024" --hyperv-disk -size "20000" mydockervm

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

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

        【讨论】:

          【解决方案8】:

          这里的问题是默认情况下 docker 使用DockerNAT 网络交换机。您应该创建一个新的外部网络交换机。这个问题在herehere 中得到解决。您可以使用以下命令创建外部网络交换机

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

          或者您可以通过 UI 创建一个

          请务必在创建外部交换机后重新启动设备。

          【讨论】:

          • 这在 Windows 10 和 docker-machine.exe version 0.8.2, build e18a919 上对我不起作用。在 Hyper-V 管理器 UI 上,我创建了那个外部虚拟交换机,然后我重新启动了 PC,然后在具有管理权限的 PowerShell 上输入了PS C:\Users\<MY_USERNAME>> docker-machine create -d hyperv --hyperv-virtual-switch VirtualSwitch4DockerMachine fooVM。我认为C:\Users\<MY_USERNAME>>.ssh/id_rsa 上的权限可能存在一些问题(在cygwin 上ls -laid_rsa 提供:Administrators Domain Users),但我没有看到任何其他可以执行的尝试。
          • 这对我有用。使用外部虚拟交换机就可以了。
          • Windows 10 功能升级后发生在我身上。突然间,我的 docker-machine 使用的 hyper-v 虚拟机陷入了困境。我最终不得不删除我现有的虚拟(外部)交换机,重新创建它,并将其重新连接到虚拟机。
          猜你喜欢
          • 1970-01-01
          • 2020-10-24
          • 2021-01-09
          • 2018-10-24
          • 2013-04-13
          • 2010-10-21
          • 1970-01-01
          • 1970-01-01
          • 2016-01-03
          相关资源
          最近更新 更多