无法配置Docker Host的远程访问

时间:2016-02-03 05:17:49

标签: windows docker

我在两台Windows计算机(Windows 10和Windows 7 x64 SP1)上成功Docker for Windows install。我可以通过终端服务(RDP)或通过Powershell远程处理成功执行docker主机的管理职责。

但是,Docker文档表明Docker主机提供了自己的RESTful remote api进行管理。我想使用这个API。问题是在文档中给出的所有示例中,客户端调用(通过curl)实际上与Docker主机位于同一个框中。换句话说,它们实际上并不是远程,不幸的是,适应远程场景的步骤并不明显。

例如,请直接从文档中考虑此命令:

  

curl --insecure --cert~ / .docker / cert.pem --key~ / .docker / key.pem https://YOUR_VM_IP:2376/images/json

显然我需要YOUR_VM_IP才能继续。所以在我的两个Windows框中输入docker-machine ls。我发现,在两者物理Windows机器上,Docker主机的地址为tcp://192.168.99.100:2376

糟糕。他们不能两者具有相同的IP地址。显然,VirtualBox NAT地址在两种情况下都是VM本地的。

这是主要问题。我想知道如何公开外部可见的Docker主机IP地址,以便我可以实际执行远程管理。

可能这个问题不是关于Docker而是关于VirtualBox的。 Docker Host VM可以配置多种网络接口和网络模式(例如NAT,网桥,内部,仅主机。也许某种组合可以使Docking Host VM的IP暴露。

不是吗?另一种可能性是,我只是误解了Docker对远程API"远程API的意义。也许"远程"只是意味着我不需要直接SSH到Docker主机,来自主机,以便执行管理。但是,我不认为我有误解 - 尤其是当我看到这样的引号时:

  

默认情况下,守护程序只能接受Unix域套接字上的本地连接。   取自:Docker Machine Basics

是的,我当然发现"默认情况下"它确实是当地的。现在我只需要知道如何使它成为非本地的,这样我就可以提供远程管理。我在任何地方都找不到相关文档。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

  

我在任何地方都找不到相关的文档。

嗯,这可能是因为“windows上的docker”只是一个黑客,只针对一个盒子上的本地开发。

每个人在生产中运行Docker(即需要多个盒子的人)只需在Linux上直接运行Docker而无需额外的VM。所有编排技术(Kubernetes等)都假设Docker服务器具有可路由的IP地址。

  

可能这个问题不是关于Docker而是关于VirtualBox的。

正确。您可以通过exposing your VM's port 2376将问题“修复”到您的网络。您可能还必须在Windows防火墙中允许该端口。

答案 1 :(得分:0)

更新:如果您使用的是Windows Server 2016,可以尝试在here的帮助下启用远程服务器

希望Microsoft Docker.Dotnet上Issue 109的详细信息有用

从以上链接中提取如下

Docker for Windows使用命名管道npipe:////./pipe/docker_engine来访问REST API。您必须将管道映射到tcp端口。

可以使用socat

完成此操作

socat TCP-LISTEN:2375,reuseaddr,fork PIPE:\\.\pipes\docker_engine

运行socat地图后,您可以使用

进行连接

tcp://localhost:2375

有关此问题的更多信息here

如果有帮助请告诉我