Can';无法连接到Docker for Windows中的ASP.Net站点
我很难从主机连接到运行在Docker上Windows容器中的ASP.Net网站。我可以毫无问题地连接到运行在Linux容器中的网站 我已尝试连接到localhost和分配给容器的IP端口,但在这两种情况下都出现超时错误 我已经尝试了几个ASP.Net示例,这些示例已经预先构建好,同时尝试构建自己的自定义映像。在每种情况下,我都会得到相同的超时错误。我也尝试过卸载和重新安装docker,但这并没有改变任何事情Can';无法连接到Docker for Windows中的ASP.Net站点,docker,docker-networking,docker-for-windows,Docker,Docker Networking,Docker For Windows,我很难从主机连接到运行在Docker上Windows容器中的ASP.Net网站。我可以毫无问题地连接到运行在Linux容器中的网站 我已尝试连接到localhost和分配给容器的IP端口,但在这两种情况下都出现超时错误 我已经尝试了几个ASP.Net示例,这些示例已经预先构建好,同时尝试构建自己的自定义映像。在每种情况下,我都会得到相同的超时错误。我也尝试过卸载和重新安装docker,但这并没有改变任何事情 我正在运行Windows 10 Pro和Docker Community Edition
我正在运行Windows 10 Pro和Docker Community Edition 17.03.1-ce-win12(12058)最终,我能够使用定制的旧版本的Microsoft虚拟化清理脚本完全重置容器网络。这将重置我的容器网络,现在一切都正常工作。摘要:
- 当使用容器docker文件中的
指令定义容器的已发布端口时,EXPOSE
参数必须与-P
命令一起使用,以便“激活”这些已发布的端口docker run
- Windows容器主机无法使用
、localhost
或其外部主机IP地址访问正在运行的容器。通过使用来自第二台主机B的a的IP地址访问在给定主机a上运行的容器。或者,您可以直接使用容器的IP地址127.0.0.1
docker run
命令的“-P”参数“激活”该已发布端口
例如,如果您的容器映像是web\u app
,并且该映像的Dockerfile包含行EXPOSE 80
,那么当您继续运行该映像时,您需要执行以下操作:
C:\> docker run -P web_app
一旦容器运行,它应该在容器端口80上可用。然后,您可以继续通过浏览器查看应用程序。为此,您有两种选择:
docker exec ipconfig
,为容器IP提供资金,其中
是容器的ID
通过在容器主机上运行docker ps
,可以获取容器的ID和容器的公开端口ipconfig
查找主机的IP地址
通过从主机运行docker ps
,您可以识别应用程序的主机端口。然后,在PORTS
下,您将看到表单0.0.0.0:->/TCP
的映射。在此映射中,是应用程序在主机上可用的端口
获得容器主机的IP地址以及应用程序在主机上可用的端口后,您可以使用该信息从单独主机上的浏览器访问应用程序
注意:现在,您无法从自己的主机以这种方式访问容器——目前,Windows容器主机无法访问它正在运行的容器,不管是使用了localhost
、127.0.0.1
还是主机IP地址无法从Windows计算机连接到同一主机上的IP:端口,必须连接到内部IP。这是Windows上已知的错误。要验证它,请从外部机器连接到您的容器,它将与您的工作站和端口的IP一起工作。我已尝试连接到容器的内部IP,但它不工作。我通过使用:
docker inspect--format'{{.NetworkSettings.Networks.nat.IPAddress}}我的容器名来获取IP
它在容器本身内部本地工作吗?尝试调用WebRequestdirectl到本地主机。它在本地工作。Invoke WebRequest返回状态码200和预期的标题。禁用主机上的防火墙您所说的一切都是真的,但没有解决我遇到的问题。我无法ping,也无法连接到Windows容器中运行的任何容器的内部IP。此外,如果您连接到容器的内部IP地址,则不需要指定-P选项。我仍然认为在Docker for Windows中没有工作环回是完全疯狂的。它将Docker的价值从高到低,因为无法轻松设置本地开发环境。即使只是获取容器IP地址也是一件痛苦的事。感谢您的反馈——我们知道这是一个问题,在Windows核心网络团队中,我们正在积极努力在Windows上获得本地主机/环回支持。目前我无法提供具体的可用日期,但我们非常感谢诸如此类的评论,以确认生产这种支持仍然是我们团队的优先事项。