本地主机不工作docker窗口10

我正在使用VS2017泊坞窗的支持。 VS为我创buildDockerFile,当我build立docker-compose文件时,它创build容器并在172.xxx IP地址上运行应用程序。 但是我想在本地主机上运行我的应用程序。

我做了很多事情,但没有任何工作。 按照Docker文档作为初学者并构buildMicrosoft示例应用程序 。 第二个链接是完美的工作,但当我尝试第一个链接的方法时,我得到HTTP错误404。

任何帮助表示赞赏。

为了访问在Docker Docs上发布的示例,您指出不能正常工作,请按照以下步骤操作,

1 – 列出所有正在运行的docker集装箱

 docker ps -a 

运行这个命令后,你应该能够查看当前正在运行的所有docker容器,如果你正确地跟踪了docker docs示例,你应该看到一个名为webserver的容器。

2 – 获取您的webserver容器运行的IP地址。 要做到这一点,运行以下命令。

  docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" webserver 

您现在应该可以获取运行webserver容器的IP地址,希望您熟悉这一步,因为它甚至可以在Microsoft示例应用程序示例附带的问题中find。

一旦运行上述命令,访问您获得的IP地址,您应该看到所需的输出。

回答你的第一个问题(在docker for windows中访问docker容器和localhost在docker中),在Windows主机中,由于默认NATnetworking堆栈的限制,你不能访问带localhost的容器。 有关此问题的更详细的解释可以通过访问此链接获得。 似乎docker文档还没有更新,但这个问题只存在于Windows主机。

还有一个报告的问题 – 按照此链接看到。

希望这可以帮助你。

编辑

这个问题的解决scheme似乎将在未来的Windows版本中发布。 然而,这个版本出来这个限制是可用的Windows主机。 点击此链接 – > https://github.com/MicrosoftDocs/Virtualization-Documentation/issues/181

很可能不同的应用程序已经在端口80上运行。您必须将您的网站转发到不同的端口,例如:

 docker run -d -p 5000:80 --name myapp myasp 

并将浏览器指向http://localhost:5000

当你启动一个容器时,你可以通过-p选项指定哪些内部端口将作为主机上的端口公开。 -p 80:80将网站使用的内部端口80暴露给主机的端口80。

Docker不会抱怨,如果另一个应用程序已经侦听端口80,如IIS,另一个Web应用程序或任何工具与Web界面默认运行80。

解决scheme是:

  1. 确保没有其他的端口80或者运行
  2. 转发到其他端口。

转发到不同的端口要容易得多。

为确保您可以连接到端口,请使用telnet命令,例如:

 telnet localhost 5000 

如果你立即得到一个空白的窗口,这意味着服务器已经启动并在这个端口上运行。 如果您在一段时间后收到消息并超时,则表示没有人正在运行。 您可以使用这两个检查免费端口, 确保您可以连接到您的容器的Web应用程序。

PS我遇到了这一个星期前,因为我试图build立一个SQL Server容器进行testing。 我已经运行了1个默认和2个命名实例,当我尝试创build容器时, docker并没有投诉。 花了一段时间才明白出了什么问题。