跟随https://stackoverflow.com/a/46266757(@mkubaczyk 回答“Ubuntu 下 docker + ufw 的最佳实践是什么”)指导如何正确配置 Docker 和 UFW,但仍然无法在容器中访问互联网。
可能是什么问题?
答案1
问题可能出在您使用 设置的容器上docker-compose
。默认情况下,会为文件中的服务创建新网络docker-compose.yml
。这导致您不仅拥有子网设置docker0
的接口172.17.0.0/16
,而且通常还有其他接口 172.x.0.0/16。
为了解决这个问题,您应该为您的网络添加更多规则:
$ iptables -t nat -A POSTROUTING ! -o br-XXX -s 172.YYY.0.0/16 -j MASQUERADE
其中 br-XXX 是接口名称,172.YYY.0.0/16 - 子网。
或者,使用单个docker0
网络,在您的docker-compose.yml
每个服务中描述:
network_mode: bridge