docker 外部连接_如何从主机外部(同一网络)连接到Docker容器[Windows]

本文介绍了如何在Windows主机通过VirtualBox运行Docker时,从外部网络连接到Docker容器。主要内容包括理解Docker端口映射、VirtualBox网络模式(特别是桥接模式)以及如何配置VirtualBox以允许外部访问。
摘要由CSDN通过智能技术生成

小编典典

TL; DR 检查VirtualBox主机的网络模式-是否应该bridged在本地网络上访问虚拟机(及其托管的Docker容器)。

听起来您的困惑在于连接到哪个主机以便通过HTTP访问您的应用程序。您还没有真正弄清楚您的配置是什么-我将基于您的标记中包含“ Windows”和“

VirtualBox”的事实做出一些猜测。

我猜您在Windows主机上的VirtualBox中运行的某种Linux上运行了Docker。我将如下标记IP地址:

D = Docker容器的IP地址

L =在VirtualBox中运行的Linux主机的IP地址

W = Windows主机的IP地址

在Windows主机上运行Go应用程序时,可以http://W:8080/从本地网络上的任何位置连接到该应用程序。之所以可行,是因为Go应用程序绑定了Windows计算机上的端口8080,并且任何尝试访问IP地址上的端口8080的人都W将建立连接。

这就是它变得更加复杂的地方:

VirtualBox设置虚拟机(VM)时,可以以几种不同模式之一配置网络。我不记得所有不同的选项是什么,但是您想要的是bridged。在这种模式下,VirtualBox会将虚拟机连接到本地网络,就像虚拟机是网络上的独立计算机一样,就像插入网络中的任何其他计算机一样。在bridged模式下,虚拟机会像其他任何计算机一样出现在您的网络上。其他模式设置的方式有所不同,并且计算机将在您的网络上不可见。

因此,假设您为Linux主机(bridged)正确设置了网络连接,则Linux主机将在您的本地网络上具有IP地址(如192.168.0.x之类),并且您可以在处访问Docker容器http://L:8080/。

如果将Linux主机设置为以外的其他模式bridged,则 可以 从Windows主机进行访问,但这将取决于它所处的模式。

编辑 -根据以下评论,听起来很像我上面描述的情况是正确的。

让我们备份一点:这是Docker在我的计算机(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.

到目前为止和我在一起?好的,现在让我们退后一步,看看您的系统。您的计算机正在运行Windows-

Docker(当前)不在Windows上运行,因此您使用的工具已在VirtualBox虚拟机中设置了Linux主机。当你做docker

run你的环境,同样的事情发生了-

8080端口在Linux主机上连接到端口8080的容器上。这里最大的区别是您的Windows主机不是运行容器的Linux主机,因此这里有另一层,并且跨该层的通信会遇到问题。

您需要做的是以下两件事之一:

将VirtualBox VM上的端口8080连接到Windows主机上的端口8080,就像将Docker容器连接到主机端口一样。

使用上述bridged网络模式将VirtualBox VM直接连接到本地网络。

如果您选择第一个选项,则可以访问Windows主机的IP地址或主机名http://W:8080所在的容器W。如果选择第二个,则可以访问Linux

VM的IP地址或主机名http://L:8080所在的容器L。

这就是所有更高层次的说明-现在您需要弄清楚如何更改VirtualBox VM的配置。这是我无法真正为您提供帮助的地方-

我不知道您在Windows机器上使用什么工具来完成所有这些工作,而且我对在Windows上使用Docker一点都不熟悉。

如果可以进入VirtualBox配置窗口,则可以进行以下描述的更改。还有一个命令行客户端将修改VM,但是我对此并不熟悉。

对于bridged模式(这确实是最简单的选择),请关闭您的VM,单击顶部的“设置”按钮bridged,然后将网络模式更改为,然后重新启动VM,您就可以了。VM应该通过DHCP在本地网络上选择一个IP地址,并且对于该IP地址在网络上的其他计算机应该是可见的。

2020-06-17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值