我有以下問題:我有OS xUbuntu,並且我使用VirtualBox運行虛擬機。我的虛擬機上的操作系統是Debian Wheezy。我有Flask應用程序。我想要做的是,當我從VM(位於127.0.0.1:5000)啓動我的應用程序時,從我的主機(xUbuntu)在瀏覽器上運行它。從虛擬機啓動尋址Flask應用程序
我該怎麼做?
我有以下問題:我有OS xUbuntu,並且我使用VirtualBox運行虛擬機。我的虛擬機上的操作系統是Debian Wheezy。我有Flask應用程序。我想要做的是,當我從VM(位於127.0.0.1:5000)啓動我的應用程序時,從我的主機(xUbuntu)在瀏覽器上運行它。從虛擬機啓動尋址Flask應用程序
我該怎麼做?
我像解釋過的那樣解決了這個問題here非常感謝大家的幫助!
如果主機和訪客在網絡中,則可以使用訪客的IP地址訪問該應用程序。您可以使用「ifconfig」命令讀取客戶機操作系統的IP地址,然後從主機的瀏覽器中使用url作爲「abcd:5000」(abcd將作爲客戶的IP地址)
有一個few strategies VirtualBox用來允許「訪客」虛擬機(在你的情況下,Debian Wheezy VM)訪問你的「主機」計算機的網絡(在你的情況下,xUbuntu)。我會盡量給你簡要介紹一下,因爲最後有幾種方法可以做你想做的事情,你使用的策略可能與你的情況有關。
默認是使用「NAT」(Network Address Translation),基本上建立了主機像一個網絡交換機,把所有的來賓圖像下「子網」。雖然這可以讓您的訪客輕鬆訪問您的網絡和互聯網,但它無法讓您的主機輕鬆訪問您的訪客(儘管可以使用NAT Port Forwarding)。換句話說,您的主機IP可能是192.168.1.9,但您的訪客IP將是10.0.2.15。在沒有設置端口轉發的情況下,您無法從主機連接到10.0.2.15,只有源自客戶端的連接中的數據包才能找到回到客戶端的路徑。
這使您的各種子虛擬機出現,好像他們是在同一個網絡主機上的計算機。換句話說,如果你的主機從你的路由器收到192.168.1.100的IP,那麼你的客戶可能得到192.168.1.101。在這種情況下,兩臺計算機都可以使用這些IP地址與彼此進行通信。但是,這意味着如果沒有路由器給他們的IP地址(例如,如果您正在筆記本電腦上運行,並且沒有無線接入點連接),主機和來賓無法通信。這也意味着您的虛擬機可用於接收外部流量,這可能會產生安全隱患。最後,由於您的路由器很可能通過DHCP爲您設置了IP,所以無論何時啓動虛擬機都可能會改變您的訪客IP,這可能很煩人。
所以,像這樣設置你的系統可能適合你,只要你確定你的主機必須連接到路由器,並且數據包將通過路由器。
這意味着客戶虛擬機設置爲「內部網絡」將成爲談得來的海誓山盟自己的網絡上,除了主機聯繫。不過,我相信它不會讓主機聯繫虛擬機,所以它可能不是你想要的。請注意,我沒有這方面的經驗。
這將創建一個可以使用的主機和客戶之間發送數據包的主機上一個新的接口。這意味着沒有路由器需要分配IP地址。但是,這也意味着訪客不能訪問互聯網,只能直接連接到主機。
很明顯,做什麼取決於你的情況。如this question on Superuser所示,似乎沒有一個好的選擇。答案顯示了一種解決方法:讓訪客使用兩個單獨的適配器,以獲得多種網絡風格的好處。這裏的例子是使用一個NAT適配器(允許你的客戶輕鬆訪問互聯網),另一個適用於主機(允許你的主機連接到你的客戶)。
如果您在設置時遇到問題,請考慮使用VirtualBox community或Superuser(這是VirtualBox特定問題比StackOverflow更好的地方)。
這個問題是舊的,但谷歌搜索這個問題首先讓我在這裏。
我發現這很好地工作:
VBoxManage.exe modifyvm "VMnameInQuotes" --natpf1 "guestFlask,tcp,,5000,,5000"
從http://dnfehren.github.io/blog/2012/07/20/use-python-flask-server-through-nat-virtualbox-guest/
由於採取了這一信息標誌,但這些鏈接不給我怎麼辦呢具體步驟。但是,我在某個網站上找到了解決方案。 – Belphegor