"错误检查TLS连接:主机未运行"通过SSH连接到Windows主机时从docker-machine

时间:2016-06-20 18:26:43

标签: windows docker cygwin openssh

我有一个运行docker实例的远程Windows主机和默认的docker-machine vm。当我SSH到主机并尝试运行任何docker-machine命令,即

> eval $(docker-machine env default --shell bash)
  

docker-machine发出"错误检查TLS连接:主机未运行。"

我在StackOverflow上搜索并发现其他人重新生成证书并获得成功的情况,所以我尝试了这个,但没有运气。我重新启动了docker-machine vm,再次没有运气。

我可以使用docker-machine命令,如果它们在本地运行而不是在ssh上运行,但我需要能够最终ssh到主机并运行命令。我在cygwin上使用openssh。 PATH已正确设置,如果我将env命令的输出放入我的.ssh/environment文件中,我甚至可以运行像docker ps这样的泊坞命令。我只是无法与docker-machine vm进行交互。

2 个答案:

答案 0 :(得分:1)

首先,如果您使用的是Hyper-V(可能还有其他配置),则需要为docker-machine使用提升的外壳。

您也许可以follow documentation允许与Hyper-V进行非高架交互(我没有使用docker-machine进行过此测试,因此YMMV)。

一个可行的技巧是在提升的环境中运行docker-machine env VMNAME以获得总体轮廓。然后为您的VM查找MAC地址,并将其硬编码为有用的脚本。例如;对于MAC地址为00-15-5D-00-00-01的名为“ MYMACHINE”的计算机,以下脚本将通过非高架外壳将docker指向正确的计算机(通过解析系统arp表中的IP):

重击:

VM_MACADDR="00-15-5D-00-00-01"
export DOCKER_MACHINE_NAME="MYMACHINE"
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://`arp -a | grep -i $VM_MACADDR | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+'`:2376"
export DOCKER_CERT_PATH="$USERPROFILE\.docker\machine\machines\$DOCKER_MACHINE_NAME"
export COMPOSE_CONVERT_WINDOWS_PATHS="true"

PowerShell:

$VM_MACADDR="00-15-5D-00-00-01"
$Env:DOCKER_MACHINE_NAME="MYMACHINE"
$Env:DOCKER_TLS_VERIFY = "1"
$Env:DOCKER_HOST = "tcp://$((Get-NetNeighbor -LinkLayerAddress $VM_MACADDR -AddressFamily IPv4 | Select-Object -First 1).IPAddress):2376"
$Env:DOCKER_CERT_PATH = "$env:USERPROFILE\.docker\machine\machines\$Env:DOCKER_MACHINE_NAME"
$Env:COMPOSE_CONVERT_WINDOWS_PATHS = "true"

答案 1 :(得分:0)

你可以在windows上找到一个简单的tuto for setup docker: https://dzone.com/articles/docker-machine-windows-how

对我来说,这解决了我的所有问题