在Windows上的Docker容器中访问主机

时间:2018-08-03 06:33:54

标签: windows docker

我在最新的Windows 10上使用适用于Windows的Docker CE并使用 针对Web服务器运行测试的脚本。 (确切地说,是一个用于WebDAV服务器的石蕊测试套件,但我认为问题出在 是一般。)

我在Powershell控制台上运行Web服务器:

> wsgidav -p 8080 -H localhost
21:04:19.107 - <13348)> wsgidav                     INFO    :  Running WsgiDAV/3.0.0a3 Cheroot/6.4.0 Python/3.6.5
21:04:19.107 - <13348)> wsgidav                     INFO    :  Serving on http://localhost:8080 ...  

在另一个Powershell控制台中,我在Docker容器中运行脚本(使用FROM alpine)。 该脚本将启动并尝试访问端点,但不会成功:

> docker pull mar10/litmus
> docker run --rm -p 8080:8080 mar10/litmus http://gateway.docker.internal:8080
-> running `basic':
  0. init.................. FAIL (connection refused by `gateway.docker.internal' port 8080: Operation timed out)

我到目前为止尝试过

  • 使用gateway.docker.internal主机名
  • 使用-p PORT:PORT
  • 使用--net=host
  • 重新启动docker守护进程(有趣的是,有时它也是 修复docker pull中的超时)
  • Web服务器的不同IP地址(127.0.0.1,localhost,0.0.0.0,本地IP)

到目前为止没有任何效果(尽管故障消息可能有所不同)。 也许我只是错过了上述方法的有效组合,或者其他任何技巧?

1 个答案:

答案 0 :(得分:0)

FWIW,我能够通过使用--network host选项构建容器并使用客户端的真实IP(而不是localhost或0.0.0.0)来解决此问题。

此处的详细信息:https://hub.docker.com/r/mar10/docker-litmus/