簡體   English   中英

無法聯系Windows主機上的Docker容器

[英]Cannot contact docker container on Windows host

tl; dr問題的摘要:

  • 應用程序在容器內成功啟動,綁定到容器內的127.0.0.1:8080,並成功服務Web請求,但僅在容器內
  • docker ps -a確認端口8080已暴露
  • 當我請求http:// [Container IP address]:8080時,無法使用容器的實際IP地址從主機與應用程序進行通信
  • 主機正在運行Windows 10
  • Windows防火牆已完全禁用以進行故障排除

為了排除故障,我創建了最簡單的應用程序以在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:80http:// localhost:8080上的“網站”,這顯然是運行Windows的Docker用戶的常見問題。 但是,該解決方案似乎已為Internet上運行的所有其他Windows用戶解決了此問題

docker inspect myapp

然后點擊生成的IPAddress也不起作用。 我得到:

在此處輸入圖片說明

在Chrome中同時點擊http://172.17.0.2:80http://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM