如何访问在docker中的docker容器中运行的应用程序?

时间:2015-07-09 11:04:04

标签: docker docker-networking

我的项目中有一个奇怪的场景。

我正在一个docker容器中运行“Supervisor”应用程序。

使用这个主管我在docker容器中运行两个“web应用程序”,两者都使用一个微服务;再次安装在另一个docker容器中。

现在,我可以从“Supervisor的容器”访问我的应用程序。但显然我的机器无法访问它。

如何从我的机器访问我的应用程序“Web App1”或“Web App2”?

我对码头网络的了解较少。 请帮忙。

enter image description here

2 个答案:

答案 0 :(得分:0)

Docker管理“主机”和容器之间的网络流量。在这种情况下,您在不同的图层上有许多泊坞窗。在每一层上,您必须将内部容器的端口暴露给下一层的“docker host”,依此类推。

这是一个端口解决方案:

因此172.17.42.1上的“Supervisor”必须将所有内部容器(172.17.0.2-4)的端口公开为其自己的端口。因此,对于“Supervisor”,您需要为“Supervisor”内的所有容器的每个端口提供-p docker参数。

公开网络:

配置本地计算机以将任何网络数据包172.17.*.*发送到172.17.42.1。然后配置172.17.42.1以将IP 172.17.0.*的网络包发送到其网络适配器Docker0(默认的docker网络适配器)。确切的实施取决于您的发行。

另一种解决方案:

略过您的Supervisor容器并使用docker-compose来安排和管理您的内部容器。

答案 1 :(得分:0)

您可以将Web App1和Web App2的端口映射到主机容器,并使用您可以从您的计算机访问这些容器的IP地址和端口。更好的方法是为容器添加主机名并映射端口,这样您就不必记住IP地址,因为每次重新创建容器时都会随机生成它们。