Docker卡在“等待SSH可用...”

17
我正在使用Windows和Hyper-v的docker创建容器。我已经将docker机器“vmachine”添加到我的docker配置中。当机器第一次创建时,它会获得一个IP地址(尽管我无法管理nginx来访问它 - ERR_CONNECTION_REFUSED)并完成启动。
当我关闭机器然后再试图启动它时,我卡在这个信息里: 等待SSH可用... 它没有进一步发展。机器已经启动,但是当我输入命令docker-machine ip vmachine时,我得到的是IPv6,而不是IPv4,例如fe80::215:5dff:fe21:10b
我做错了什么?

你是否特别需要IPv4地址?你不能使用IPv6地址吗? - JAB
虽然我发现使用IPv4更容易,但这不是问题,而是结果...问题在于它卡在“等待SSH可用”的状态。 - João Dias
9个回答

10

问题在于默认情况下Docker使用DockerNAT网络交换机。您应该创建一个新的外部网络交换机。这个问题在这里这里都有涉及。您可以使用以下命令创建一个外部网络交换机:

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

或者您可以通过UI创建一个外部网络交换机。

外部网络交换机

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


2
这在我的 Windows 10 上以及 docker-machine.exe version 0.8.2, build e18a919 上没有起作用。在 Hyper-V Manager UI 上,我创建了外部虚拟交换机,然后重新启动了电脑,在具有管理员权限的 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 -la 的结果为 Administrators Domain Users),但我没有看到其他尝试的机会。 - TPPZ
这对我起作用了。使用一个外部虚拟交换机就解决了问题。 - Nathan R
1
这是在Windows 10功能升级后发生的。突然间,我的由docker-machine使用的hyper-v虚拟机出现了问题。最终我不得不删除现有的虚拟(外部)交换机,并重新创建并重新连接到虚拟机。 - Phillip
启用外部开关后,我无法访问互联网。 - Asdf11

4

我曾经遇到类似的问题,但是没有一个解决方案起作用。根据这个答案,docker启动SSH时使用了Unix特定元素。虽然后续版本中据说已经修复了这个问题,但我仍然遇到了“等待SSH”的问题。我通过简单地使用GIT bash运行所有与docker相关的SSH命令来解决了这个问题。


它对我有效。使用GitBash不会卡在“等待SSH可用…”这一步。 - Luk Aron

2

使用开关--native-ssh

例如:docker-machine --native-ssh ....此处获取更多详细信息。


1
这是我解决问题的方法。
原来 Windows 10 版本 1709 开始自带 SSH 客户端,路径为 C:\Windows\System32\OpenSSH。 这里 是一篇讨论它的文章。
看起来 Docker 正在使用那个 SSH 实现,但两者不兼容。我没有寻找删除 Windows 10 中内置 SSH 实现的正确方法,而只是将文件夹重命名。对我来说,这已经足够解决问题了。

对我来说可行。 对我来说,我在WSL2中运行docker-machine.exe。 - Hai Mai

1
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。
使用调试开关查看确切的错误,对于我来说,它无法分配内存。

0

在执行上述建议并且如果您正在运行 Windows 机器上的 Docker,请尝试使用 cli 登录。这对我有用。


0

如果您正在使用命令提示符,Docker 将会卡在“等待 SSH 可用”的状态... 因此,请像 @Dave Howson 所说的那样切换到使用 GIT BASH,它将可以正常工作。


2
这应该是一条注释 @Gary - Thamaraiselvam

0

如果您正在使用Oracle VM,您必须首先确保您的新云VM处于运行状态。

之前输入图像描述

之后输入图像描述


0

我在Windows 10和Docker桌面版上遇到了类似的问题。我采取了以下步骤来解决问题:

  1. docker-compose down --remove-orphans
  2. docker system prune -f
  3. 停止Docker桌面版,结束在Windows任务管理器中所有正在运行的Docker服务
  4. 重新启动Docker桌面版

然后一切都正常了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接