我在桥接网络中有一个容器。它可以毫无问题地到达主机,并连接到主机上的每个端口,除了由其他容器发布的端口。
我禁用了 userland 代理,所以我认为这可能与 docker 如何设置 iptable 规则有关。
有没有一种简单的方法可以让容器到达其他容器发布的端口(在不同的桥接网络中运行)?
我想避免将两个容器放在同一个网络中,或者切换到主机网络。
我在桥接网络中有一个容器。它可以毫无问题地到达主机,并连接到主机上的每个端口,除了由其他容器发布的端口。
我禁用了 userland 代理,所以我认为这可能与 docker 如何设置 iptable 规则有关。
有没有一种简单的方法可以让容器到达其他容器发布的端口(在不同的桥接网络中运行)?
我想避免将两个容器放在同一个网络中,或者切换到主机网络。
我无法重现您的问题。
我定义了两个 Docker 桥接网络:
我
c1
在网络net1
中启动容器,将容器端口发布8080
到主机端口8081
:我
c2
在网络net2
中启动容器,将容器端口发布8080
到主机端口8082
:现在从容器中我可以通过访问主机端口来访问
c1
容器中的 Web 服务:c2
8082
从容器中,我可以通过访问主机端口来访问
c2
容器中的 Web 服务:c1
8081
这一切似乎都像宣传的那样工作。如果重复相同的步骤得到不同的结果,我首先要检查的是您的主机上是否有可能干扰流量的防火墙规则。
更新
--add-host
正如预期的那样,如果我只选择一个主机地址而不是使用该选项,则行为是相同的。例如,如果我有:然后这些都起作用:
等等。
与默认配置相比,这是一个相当大的配置更改:)。
如果我禁用用户级代理,它就会停止工作。
这篇文章可能会感兴趣: