我有一个运行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进行交互。
答案 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
对我来说,这解决了我的所有问题