docker-machine在Windows 10上 – “您必须在本地使用scpfunction的scp二进制副本”

我正在使用命令:docker-machine scp manager:/home/docker/foo.txt。

但是,Windows PowerShell返回“您必须具有本地scp二进制副本才能使用scpfunction”。

我确定我已经安装了'docker for windows'和'docker toolbox'。 所以我该怎么做?

我也遇到了类似的问题在Windows 8.1上。 我使用Git Bash(以pipe理员模式)而不是Powershell来解决它。

如果你碰巧安装了Git for Windows , docker-machine scp将在Git Bash中成功运行。

为了避免这个问题,为什么不直接解决呢?

最有可能的是,如果您的计算机上已经安装了Git Bash ,那么您的计算机上已经有了scp.exe ,因此您只需将scp.exe所在的文件夹添加到PATH环境variables中即可。

在我的情况下, scp.exe位于C:\Program Files\Git\usr\bin

这为我解决了同样的问题

我通过使用我已经安装的叫做pscp.exe的Putty scp程序来解决这个问题。

(最初我尝试将'pscp'重命名为'scp',但这不起作用,因为docker引擎使用-o选项发送SSH命令。'pscp'没有-o选项。

您可以直接在命令行上使用pscp。 首先找出虚拟机的IP地址:

 docker-machine env <VM_name> 

你的案例中的虚拟机名称是“经理”。 从$ Env:DOCKER_HOSTvariables中取出ip地址(无端口)。 例如:

 $Env:DOCKER_HOST = "tcp://192.168.XXX.XXX:2376" 

然后使用pscp发送文件:

 pscp <file_to_send> docker@<ip_address_of_VM>:/home/docker/foo.txt 

系统会提示您input“docker”用户的密码。 我发现docker使用默认的密码“ tcuser ”,当我这样做的时候工作。

我在Windows 10上使用Visual Studio代码版本1.14.0(作为pipe理员)也遇到了同样的问题。 使用Git Bash (以pipe理员身份)。