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

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

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

使用这个主pipe我运行两个“networking应用程序”在docker集装箱,都使用一个微服务; 再次安装在另一个docker集装箱中。

现在,我可以从“主pipe的容器”访问我的应用程序。 但显然这是不能从我的机器访问。

我怎样才能从我的机器上访问我的应用程序“Web App1”或“Web App2”?

我有关于dockernetworking的知识较less。 请帮忙。

在这里输入图像说明

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

Dockerpipe理“主机”和容器之间的networkingstream量。 在这种情况下,您在不同的图层上有许多docker工人。 在每一层上,你必须将内部容器的端口暴露给下一层的“docker主机”,依此类推。

这是对端口的解决scheme:

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

公开networking:

configuration本地机器发送任何networking包172.17.*.*172.17.42.1 。 然后configuration172.17.42.1将IP 172.17.0.*networking包发送到其networking适配器Docker0 (默认的泊坞窗networking适配器)。 确切的实现取决于你的分布。

另一个scheme

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