Докер застрял на "Ожидание SSH, чтобы быть доступным..."

Я использую докер с Windows и Hyper-v для создания контейнеров. Я добавил док-машину vmachine в конфигурацию докеры. В первый раз, когда машина создана, она получает IP (хотя я не могу управлять nginx для доступа к нему - ERR_CONNECTION_REFUSED) и заканчивает загрузку.

Когда я выключаю машину, а затем пытаюсь ее загрузить, я застрял в этом сообщении

Ожидание доступности SSH...

И он не развивается оттуда. Машина загружается, однако я получаю IPv6, когда вводю команду docker-machine ip vmachine like - fe80::215:5dff:fe21:10b insted из IPv4

Что я делаю неправильно?

Ответы

Ответ 1

Проблема здесь по умолчанию. docker использует сетевой коммутатор DockerNAT. Вместо этого вы должны создать новый внешний сетевой коммутатор. Эта проблема рассматривается здесь здесь и здесь. Вы можете создать внешний сетевой коммутатор, используя следующую команду

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

или вы можете создать его через интерфейс пользователя

внешний сетевой коммутатор

Обязательно перезагрузить устройство после создания внешнего коммутатора.

Ответ 2

У меня была похожая проблема, и ни одно из решений не сработало. Оказывается, согласно этому ответу, Docker запускает SSH со специфическими элементами Unix. Говорят, что это было исправлено в последующих выпусках, но я все еще сталкивался с проблемой "Ожидание SSH". Я решил эту проблему, просто используя GIT bash для запуска всех связанных с докером команд SSH.

Ответ 3

docker-machine.exe -debug create --driver hyperv --hyperv-virtual-switch "Внешний виртуальный коммутатор" --hyperv-cpu-count "1" --hyperv-memory "1024" --hyperv-disk -размер "20000" mydockervm

убедитесь, что у вас есть дополнительная настройка VirtualSwitch, с выбранным внешним сетевым драйвером, Удалить виртуальный бокс

Используйте переключатель отладки, чтобы увидеть точную ошибку, для меня он не смог выделить память.

Ответ 4

Сделав то, что упомянуто в приведенных выше предложениях, и если вы запускаете Docker на машине с Windows, попробуйте войти в систему с помощью cli. Это сработало для меня.

Ответ 5

Если вы используете командную строку, Docker застрянет в ожидании доступности SSH... Так что переключитесь на использование GIT BASH, как @Dave Howson сказал, что это будет работать.

Ответ 6

Вот что решил для меня.

Оказывается, в Windows 10, начиная с версии 1709, имеется встроенный SSH-клиент по адресу C:\Windows\System32\OpenSSH. Вот статья, обсуждающая это.

Похоже, что докер использует эту реализацию SSH, и она не совместима. Я не искал подходящего способа удалить встроенную утилиту SSH в Windows 10, а просто переименовал папку. Этого было достаточно, чтобы исправить это для меня.