网络 – 允许使用docker-compose在两个docker网桥之间进行通信

我正在使用docker compose创建相当复杂的docker容器基础结构.这些容器在4个不同的网络中运行(类似于我模仿的生产环境).
Docker Compose为我创建了这四个网络,并且一切都运行得很长,因为容器不会尝试与不同网络中的其他容器通信.当他们这样做时,连接被丢弃.
我能够找出它被删除的原因,这是因为Docker将iptables规则添加到DOCKER-ISOLATION链中.
例:

-A DOCKER-ISOLATION -i br-be010eaddd0e -o br-f788f16ed0dd -j DROP
-A DOCKER-ISOLATION -i br-f788f16ed0dd -o br-be010eaddd0e -j DROP

我写了一个小脚本,删除了我想删除的规则(并允许在选定的桥之间进行通信),一切都像魅力一样,但不知何故,它们在某些时候由Docker重新创建,即使没有重新创建这些网络,所以它需要我再次运行该脚本,这非常烦人.
有没有办法专门告诉Docker允许两个桥之间的通信?或者也许在使用Docker-Compose启动容器后运行特定的shell脚本有一些技巧?

最佳答案
如果有人感兴趣,我已设法用iptables处理这个问题.解决方案是明确允许桥接子网之间的通信(假设它们具有固定的IP地址).执行此操作的方法是发出以下命令(假设桥接子网为172.24.131.0/24和172.24.132.0/24):

iptables -I FORWARD -s 172.24.131.0/24 -d 172.24.132.0/24 -j ACCEPT
iptables -I FORWARD -d 172.24.131.0/24 -s 172.24.132.0/24 -j ACCEPT

这样我们就在DOCKER-ISOLATION之前在FORWARD链中添加新规则,它强制iptables忽略整个DOCKER-ISOLATION链,以便在这些子网之间进行任何通信.

转载注明原文:网络 – 允许使用docker-compose在两个docker网桥之间进行通信 - 代码日志