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

问题描述 投票:0回答:9

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

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

等待 SSH 可用...

而且它不是从那里进化而来的。机器已启动,但是,当我输入命令

docker-machine ip vmachine
时,我得到了一个IPv6 -
fe80::215:5dff:fe21:10b
insted of a IPv4

我做错了什么?

windows docker hyper-v docker-machine
9个回答
10
投票

这里的问题是默认情况下 docker 使用

DockerNAT
网络交换机。您应该创建一个新的外部网络交换机。这个问题在这里这里。您可以使用以下命令创建外部网络交换机

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

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

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


4
投票

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


2
投票

使用开关

--native-ssh

例如

docker-machine --native-ssh ....
这里获取更多详细信息


1
投票

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

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

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


1
投票

这就是为我解决的问题。

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

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


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


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


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

running

.

之前

之后


0
投票
我在 Windows 10 和 Docker Desktop 上遇到了类似的问题。我做了以下有助于解决问题的步骤:

    docker-compose down --remove-orphans
  1. docker 系统 prune -f
  2. 停止 Docker Desktopk,在 Windows 任务管理器中杀死所有正在运行的 docker 服务
  3. 重启 Docker 桌面
一切都很好。

© www.soinside.com 2019 - 2024. All rights reserved.