[英]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.