docker 外部连接_如何从主机外部(同一网络)连接到Docker容器[Windows]
小編典典
TL; DR 檢查VirtualBox主機(jī)的網(wǎng)絡(luò)模式-是否應(yīng)該bridged在本地網(wǎng)絡(luò)上訪問(wèn)虛擬機(jī)(及其托管的Docker容器)。
聽(tīng)起來(lái)您的困惑在于連接到哪個(gè)主機(jī)以便通過(guò)HTTP訪問(wèn)您的應(yīng)用程序。您還沒(méi)有真正弄清楚您的配置是什么-我將基于您的標(biāo)記中包含“ Windows”和“
VirtualBox”的事實(shí)做出一些猜測(cè)。
我猜您在Windows主機(jī)上的VirtualBox中運(yùn)行的某種Linux上運(yùn)行了Docker。我將如下標(biāo)記IP地址:
D = Docker容器的IP地址
L =在VirtualBox中運(yùn)行的Linux主機(jī)的IP地址
W = Windows主機(jī)的IP地址
在Windows主機(jī)上運(yùn)行Go應(yīng)用程序時(shí),可以http://W:8080/從本地網(wǎng)絡(luò)上的任何位置連接到該應(yīng)用程序。之所以可行,是因?yàn)镚o應(yīng)用程序綁定了Windows計(jì)算機(jī)上的端口8080,并且任何嘗試訪問(wèn)IP地址上的端口8080的人都W將建立連接。
這就是它變得更加復(fù)雜的地方:
VirtualBox設(shè)置虛擬機(jī)(VM)時(shí),可以以幾種不同模式之一配置網(wǎng)絡(luò)。我不記得所有不同的選項(xiàng)是什么,但是您想要的是bridged。在這種模式下,VirtualBox會(huì)將虛擬機(jī)連接到本地網(wǎng)絡(luò),就像虛擬機(jī)是網(wǎng)絡(luò)上的獨(dú)立計(jì)算機(jī)一樣,就像插入網(wǎng)絡(luò)中的任何其他計(jì)算機(jī)一樣。在bridged模式下,虛擬機(jī)會(huì)像其他任何計(jì)算機(jī)一樣出現(xiàn)在您的網(wǎng)絡(luò)上。其他模式設(shè)置的方式有所不同,并且計(jì)算機(jī)將在您的網(wǎng)絡(luò)上不可見(jiàn)。
因此,假設(shè)您為L(zhǎng)inux主機(jī)(bridged)正確設(shè)置了網(wǎng)絡(luò)連接,則Linux主機(jī)將在您的本地網(wǎng)絡(luò)上具有IP地址(如192.168.0.x之類),并且您可以在處訪問(wèn)Docker容器http://L:8080/。
如果將Linux主機(jī)設(shè)置為以外的其他模式bridged,則 可以 從Windows主機(jī)進(jìn)行訪問(wèn),但這將取決于它所處的模式。
編輯 -根據(jù)以下評(píng)論,聽(tīng)起來(lái)很像我上面描述的情況是正確的。
讓我們備份一點(diǎn):這是Docker在我的計(jì)算機(jī)(Ubuntu Linux)上的工作方式。
Imagine I run the same command you have: docker run -p 8080:8080 dockertest.
What this does is start a new container based on the dockertest image and
forward (connect) port 8080 on the Linux host (my PC) to port 8080 on the
container. Docker sets up it’s own internal networking (with its own set of IP
addresses) to allow the Docker daemon to communicate and to allow containers
to communicate with one another. So basically what you’re doing with that -p
8080:8080 is connecting Docker’s internal networking with the “external”
network - ie. the host’s network adapter - on a particular port.
到目前為止和我在一起?好的,現(xiàn)在讓我們退后一步,看看您的系統(tǒng)。您的計(jì)算機(jī)正在運(yùn)行Windows-
Docker(當(dāng)前)不在Windows上運(yùn)行,因此您使用的工具已在VirtualBox虛擬機(jī)中設(shè)置了Linux主機(jī)。當(dāng)你做docker
run你的環(huán)境,同樣的事情發(fā)生了-
8080端口在Linux主機(jī)上連接到端口8080的容器上。這里最大的區(qū)別是您的Windows主機(jī)不是運(yùn)行容器的Linux主機(jī),因此這里有另一層,并且跨該層的通信會(huì)遇到問(wèn)題。
您需要做的是以下兩件事之一:
將VirtualBox VM上的端口8080連接到Windows主機(jī)上的端口8080,就像將Docker容器連接到主機(jī)端口一樣。
使用上述bridged網(wǎng)絡(luò)模式將VirtualBox VM直接連接到本地網(wǎng)絡(luò)。
如果您選擇第一個(gè)選項(xiàng),則可以訪問(wèn)Windows主機(jī)的IP地址或主機(jī)名http://W:8080所在的容器W。如果選擇第二個(gè),則可以訪問(wèn)Linux
VM的IP地址或主機(jī)名http://L:8080所在的容器L。
這就是所有更高層次的說(shuō)明-現(xiàn)在您需要弄清楚如何更改VirtualBox VM的配置。這是我無(wú)法真正為您提供幫助的地方-
我不知道您在Windows機(jī)器上使用什么工具來(lái)完成所有這些工作,而且我對(duì)在Windows上使用Docker一點(diǎn)都不熟悉。
如果可以進(jìn)入VirtualBox配置窗口,則可以進(jìn)行以下描述的更改。還有一個(gè)命令行客戶端將修改VM,但是我對(duì)此并不熟悉。
對(duì)于bridged模式(這確實(shí)是最簡(jiǎn)單的選擇),請(qǐng)關(guān)閉您的VM,單擊頂部的“設(shè)置”按鈕bridged,然后將網(wǎng)絡(luò)模式更改為,然后重新啟動(dòng)VM,您就可以了。VM應(yīng)該通過(guò)DHCP在本地網(wǎng)絡(luò)上選擇一個(gè)IP地址,并且對(duì)于該IP地址在網(wǎng)絡(luò)上的其他計(jì)算機(jī)應(yīng)該是可見(jiàn)的。
2020-06-17
總結(jié)
以上是生活随笔為你收集整理的docker 外部连接_如何从主机外部(同一网络)连接到Docker容器[Windows]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 神舟笔记本怎么用u盘怎么进入系统 神舟笔
- 下一篇: 大学生java项目创意申请表_基于jav