我的项目中有一个奇怪的场景。
我在一个 docker 容器中运行“主管”应用程序。
使用这个主管,我在 docker 容器中运行两个“Web 应用程序”,并且都使用一个微服务;再次安装在另一个 docker 容器中。
现在,我可以从“主管的容器”访问我的应用程序。但显然我的机器无法访问它。
如何从我的机器访问我的应用程序“Web App1”或“Web App2”?
我对docker网络的了解较少。请帮忙。
我的项目中有一个奇怪的场景。
我在一个 docker 容器中运行“主管”应用程序。
使用这个主管,我在 docker 容器中运行两个“Web 应用程序”,并且都使用一个微服务;再次安装在另一个 docker 容器中。
现在,我可以从“主管的容器”访问我的应用程序。但显然我的机器无法访问它。
如何从我的机器访问我的应用程序“Web App1”或“Web App2”?
我对docker网络的了解较少。请帮忙。
Docker 管理“主机”和容器之间的网络流量。在这种情况下,您在不同的层上有许多泊坞窗。在每一层上,您必须将内部容器的端口暴露给下一层的“docker host”,依此类推。
这是端口的解决方案:
所以上面的“Supervisor”172.17.42.1
必须将所有内部容器的端口暴露(172.17.0.2-4)
为自己的端口。因此,对于“主管”,您需要为“主管”-p
内所有容器的每个端口提供一个 docker 参数。
公开网络:
配置本地机器以将任何网络数据包发送172.17.*.*
到172.17.42.1
. 然后配置172.17.42.1
将 IP 的网络包发送172.17.0.*
到其网络适配器Docker0
(默认 docker 网络适配器)。确切的实现取决于您的发行版。
另一种解决方案:
跳过您的主管容器并用于docker-compose
安排和管理您的内部容器。
您可以将 Web App1 和 Web App2 的端口映射到主机容器,并使用 IP 地址和端口从您的计算机访问这些容器。更好的方法是为您的容器添加主机名并映射端口,这样您就不必记住 IP 地址,因为它们是在每次重新创建容器时随机生成的。