无法从Windows Server 2016主机

时间:2017-07-19 10:52:58

标签: apache docker nano-server

抬头:我是一般网络管理和Docker的新手。我的错误可能是由非常愚蠢的事情造成的。

我正在运行Windows Server 2016的Docker(本机变体)。我已经使用Nano Server和Apache 2.4(nanoserver / apache24)提取并构建了一个简单的Docker基础映像。我已从此映像创建了一个容器,并将容器端口80映射到我的本地端口8082.

从容器内部,我可以使用Invoke-WebRequest -uri http://localhost:80并检索默认的apache文档。但是,我还希望来自 outside 容器的Invoke-WebRequest -uri http://localhost:8082检索同一个文件。这不起作用。我还尝试使用容器NAT地址,运行Invoke-WebRequest -uri http://172.23.58.7:8082。这也不起作用。我在这里错误配置了什么?

以下我的流程截图。 PowerShell位于左侧的主机中,PowerShell位于右侧的容器内。

Screenshot of my errors

编辑:@Grimmy在评论部分询问我是否在我的Dockerfile中有EXPOSE 80以及docker ps命令是否显示带有预期端口映射的容器。这两项都是肯定的。我的容器使用参数-d -it运行,因为它是一个快速谷歌修复问题,容器在启动后立即退出。我知道-i“保持STDIN打开”和-t“分配伪tty”,但我坦率地不明白这些暗示是什么或者它是否与问题相关。

EDIT2:我没有在原帖中明确提到这一点,但值得注意的是netstat -a -o 在端口8082上显示PID监听。我希望这是案件。应该是这样的吗?

屏幕截图中显示了前50行左右的输出。

1 个答案:

答案 0 :(得分:0)

我得到了艺术家的回答' in the Docker Forums.

  

您无法连接到容器主机本身内的映射IP地址。   它是Windows实现WinNAT的错误。你需要获得私人IP   容器的地址并使用端口号连接到它。或者你可以   通过公共映射端口从另一个主机访问   网络,这将工作。

我从另一台主机连接,它立即起作用。我坦率地不知道"私人IP地址"容器的内容与NAT地址相反,所以我无法继续使用另一个提示。