您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

D = Docker容器的IP地址

L =在Virtual@R_620_2419@中运行的Linux主机的IP地址

W = Windows主机的IP地址

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

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

Virtual@R_620_2419@设置虚拟机(VM)时,可以以几种不同模式之一配置网络。我不记得所有不同的选项是什么,但是您想要的是bridged在这种模式下,Virtual@R_620_2419@会将虚拟机连接到本地网络,就像虚拟机是网络上的独立计算机一样,就像插入网络中的任何其他计算机一样。在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上运行,因此您使用的工具已在Virtual@R_620_2419@虚拟机中设置了Linux主机。当你做docker run你的环境,同样的事情发生了- 8080端口在Linux主机上连接到端口8080的容器上。这里最大的区别是您的Windows主机不是运行容器的Linux主机,因此这里有另一层,并且跨该层的通信会遇到问题。

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

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

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

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

这就是所有更高层次的说明-现在您需要弄清楚如何更改Virtual@R_620_2419@ VM的配置。这是我无法真正为您提供帮助的地方- 我不知道您在Windows机器上使用什么工具来完成所有这些工作,而且我对在Windows上使用Docker一点都不熟悉。

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

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

其他 2022/1/1 18:21:08 有474人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶