2017-07-31 98 views
0

我是新來的Docker和容器,我試圖在容器中運行一個簡單的asp.net web應用程序,但遇到問題。我的操作系統是Windows 10 Home,所以我必須使用Docker工具箱,該工具箱在僅包含基本Linux操作系統的虛擬機上運行。當我旋轉容器時,它似乎開始正常,但我無法在本地主機上查看應用程序。通過虛擬機在本地主機上運行碼頭容器

$泊塢窗運行-p 8342:5000 - 它jwarren:項目

託管環境:生產 內容根路徑:/應用程序 現在監聽:HTTP:// *:5000 應用開始。按下Ctrl + C關閉。

$搬運工PS -a 容器ID IMAGE命令創建的狀態端口名字 98cc4aed7586 jwarren:項目 「的dotnet跑」 10分鐘前最多8分鐘0.0.0.0:8342->5000/tcp naughty_brattain

我我嘗試了幾種在網絡上發現的不同建議,但迄今爲止沒有任何幫助。但是,我的網絡知識非常有限,所以我可能不完全瞭解需要做什麼。我試着用默認的VM機器IP和容器IP訪問它。我瞭解端口轉發不會轉移到容器。任何協助都會很棒,因爲這個項目將於週二到期,這是整理前的最後一個路障。

+0

嘗試訪問http://127.0.0.1連接: 8342 – papey

回答

1

我找到了應用程序的下面的帖子真的很有用:How to connect to a docker container from outside the host (same network) [Windows]。以下步驟進行完美工作:

  1. 開放的Oracle VM VirtualBox經理
  2. 選擇由碼頭工人使用的VM
  3. 點擊設置 - >網絡適配器1應(默認?) 「附 到:NAT」
  4. 單擊高級 - >端口轉發添加規則:協議TCP,主機端口 8080,客戶端口8080(離開主機IP和客戶IP空)

您現在應該是能夠通過localhost:8080和your-internal-ip:8080瀏覽您的容器。

啓動容器(Dockerfile公開5000): 搬運工運行-p 8080:5000 - 它jwarren:項目

之所以能夠與http://localhost:8080

0

使用虛擬機網絡時,有幾件事情需要考慮。

Virtual Box有三種類型的網絡選項NAT,Bridged和Host Only。

  • NAT將允許您的虛擬機通過您的互聯網訪問互聯網。但是不允許你的主機訪問虛擬機主機只有網絡將創建一個網絡,虛擬機可以訪問主機,主機可以訪問虛擬機。沒有互聯網使用此網絡
  • 橋接網絡將允許您的虛擬機從您的WiFi路由器或主網絡分配另一個IP。該IP將允許虛擬機擁有網絡訪問權限以及訪問網絡上的其他計算機。這將允許甚至主機在大多數情況下,達到IP

現在,當你想運行多克爾一個虛擬機,你想使VM具有NAT和主機僅橋樑訪問該虛擬機使用主機內部

現在端口8342需要幾件事情檢查

  • seliunx,firewalld訪問你的應用程序,UFW對你的虛擬機中使用(或正確配置爲允許端口)
  • 虛擬機有一臺主機的唯一網絡或橋接網絡
  • iptables -S不應該表現出拒絕規則

一些虛擬機已經預先配置爲僅來自外部網絡的端口22允許。所以你應該嘗試訪問<hostonlyip>:8342<bridgedip>:8342上的應用程序。

如果你想測試,如果應用程序是漲還是不是你可以從這個做以下

docker inspect <containerid> | grep IPA 

獲取IP,並運行命令

curl http://<containerip>:5000/ 

這個命令必須執行在VM內而不在你的機器上。如果此命令不起作用,那麼您的容器不會在5000上進行偵聽。有時,應用程序只在容器中偵聽127.0.0.1。這意味着它們只能在容器內工作,而不能在外面工作。容器需要內部的應用程序來聽0.0.0.0

實在不行也可以嘗試使用SSH隧道方式

ssh -L 8342:127.0.0.1:8342 [email protected]<VMIP> 

然後你應該能夠訪問localhost:8342

+0

感謝您的快速和徹底的反應!當我回到家時,我會給它一個鏡頭,並評論它是如何發生的。 – JoJo