Docker Desktop, Windows 10 - ожидание доступности SSH / сертификат, подписанный неизвестным органом - PullRequest
0 голосов
/ 27 июня 2019

Обмен решением этой проблемы на случай, если это кому-нибудь пригодится, так как точная проблема / исправление, по-видимому, не рассматриваются в других темах с похожими заголовками.

Симптомом было то, что при попытке создать новый виртуальный компьютер с docker-machine create --driver hyperv testvm процесс зависал на:

Running pre-create checks...
Creating machine...
(testvm) Copying F:\Virtual\Docker\cache\boot2docker.iso to 
F:\Virtual\Docker\machines\testvm\boot2docker.iso...
(testvm) Creating SSH key...
(testvm) Creating VM...
(testvm) Using switch "Docker External Switch"
(testvm) Creating VHD
(testvm) Starting VM...
(testvm) Waiting for host to start...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...

Это было с Windows 10 Pro, Hyper-V и новой установкой Docker Desktop Community 2.0.0.3 (хотя я подозреваю, что Hyper-V не имеет отношения к этой проблеме).

Когда я ctrl-c вышел из команды create, я смог docker-machine ls и увидел, что виртуальная машина работала, но показывал ошибку:

NAME     ACTIVE   DRIVER   STATE     URL                       SWARM   DOCKER    ERRORS
testvm   -        hyperv   Running   tcp://192.168.5.61:2376           Unknown   Unable to query docker version: Get https://192.168.5.60:2376/v1.15/version: x509: certificate signed by unknown authority

Все попытки docker-machine ssh к ней не увенчались успехом:

PS C:\> docker-machine ssh testvm
exit status 255

Я пытался использовать git bash, как предлагалось в других темах, но видел, например:

$ docker-machine ssh testvm
Error: Cannot run SSH command: Host "testvm" is not running

(Вероятно, какая-то проблема конфигурации с моей установкой git bash, но не смогла выяснить, что это было!)

1 Ответ

0 голосов
/ 27 июня 2019

Проблема оказалась какой-то проблемой совместимости с моей установкой OpenSSH здесь:

PS C:\> get-command ssh

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     ssh.exe                                            7.7.2.1    C:\Windows\System32\OpenSSH\ssh.exe

Это приводило к выводу отладки (когда docker-machine запускался с переключателем -debug) вместеэти строки:

(testvm) Calling .GetSSHPort
(testvm) Calling .GetSSHKeyPath
(testvm) Calling .GetSSHKeyPath
(testvm) Calling .GetSSHUsername
Using SSH client type: external
&{[-F /dev/null -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=none -o LogLevel=quiet -o PasswordAuthentication=no -o ServerAliveInterval=60 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null docker@192.168.5.61 -o IdentitiesOnly=yes -i F:\Virtual\Docker\machines\testvm\id_rsa -p 22] C:\Windows\System32\OpenSSH\ssh.exe <nil>}
About to run SSH command:
exit 0
SSH cmd err, output: exit status 255:
Error getting ssh command 'exit 0' : ssh command error:
command : exit 0
err     : exit status 255
output  :

Все заработало, когда я использовал переключатель --native-ssh, который задокументирован здесь .Затем я смог:

docker-machine --native-ssh regenerate-certs testvm

.. решить проблему с сертификатом и:

PS C:\> docker-machine --native-ssh ssh testvm ps
  PID TTY          TIME CMD
 3301 pts/0    00:00:00 ps

.. и т. Д.

Возможно, лучше:

docker-machine rm -y testvm
docker-machine --native-ssh create --driver hyperv testvm

У меня все работало без коммутатора в какой-то момент - я предполагаю, что у меня не было установленного OpenSSH в то время, и docker-machine по умолчанию использовал его собственную версию.

...