gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:10:57 24 4
gpt4 key购买 nike

我正在使用 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 链以进行这些子网之间的任何通信。

关于networking - 允许使用 docker-compose 在两个 docker 桥接网络之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37657914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com