[英]Cannot contact docker container on Windows host
tl; dr问题的摘要:
为了排除故障,我创建了最简单的应用程序以在dockers容器中运行,这是一个F#/ Suave应用程序,如下所示:
open Suave
[<EntryPoint>]
let main args =
startWebServer defaultConfig (Successful.OK "Hello World!")
0
效果很好,返回了一个简单的“ Hello World!” 当我在本地运行时。
为了对应用程序进行容器化,我已按照“对Docker进行.NET Core应用程序化 ”中的说明进行操作,该说明指导我像
$ docker run -d -p 8080:80 --name myapp aspnetapp
我无法连接到http:// localhost:80或http:// localhost:8080上的“网站”,这显然是运行Windows的Docker用户的常见问题。 但是,该解决方案似乎已为Internet上运行的所有其他Windows用户解决了此问题
docker inspect myapp
然后点击生成的IPAddress也不起作用。 我得到:
在Chrome中同时点击http://172.17.0.2:80和http://172.17.0.2:8080都会使我“无法访问该网站”。
另外值得注意的是,当我跑步时
docker logs myapp
唯一的一行是
[17:43:21 INF] Smooth! Suave listener started in 73.476ms with binding 127.0.0.1:8080
猜测,我也尝试过
ipconfig
然后点击Docker NAT适配器的IP地址,但这也会导致无法访问的站点。
更新 :
另一个可能不相关的观察:许多在线教程建议在Windows下,您需要直接连接到容器的IP地址,并通过运行来获取该IP地址。
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" myapp
对我来说,总是产生:
当我运行香草
码头工人检查myapp
结果JSON的结构与建议的查询不完全相同。 我得到一个桥节点,但没有nat节点:
您的应用程序说它绑定到localhost:8080,但是您正在发布端口80。停止容器,然后使用以下命令重新运行:
docker run -d -p 8080:8080 --name myapp aspnetapp
尝试在docker文件中添加以下行
ENV ASPNETCORE_URLS http://+:80
EXPOSE 80
参考: https : //www.sep.com/sep-blog/2017/02/20/hosting-asp-net-core-docker/
我的容器化应用需要侦听/绑定到0.0.0.0,而不是127.0.0.1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.