为该问题提供解决方案,以防对他人有所帮助,因为确切的问题/解决方案似乎未包含在具有相似标题的其他线程中。
症状是,尝试使用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
看到VM已启动,但显示错误:
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安装中出现某种配置问题,但无法弄清楚是什么!)
答案 0 :(得分:0)
问题出在我在这里安装的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 :
当我使用documented here的--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
.. etc。
可能更好:
docker-machine rm -y testvm
docker-machine --native-ssh create --driver hyperv testvm
一切都在某一时刻为我工作,而无需进行任何切换-我的猜测是当时我没有安装OpenSSH,并且docker-machine
默认使用其本机版本。