仍然无法从 Docker 容器访问 Internet

Te *_* Ri 5 ufw

按照/sf/answers/3238673021/(@mkubaczyk回答“Ubuntu 下 docker + ufw 的最佳实践是什么”)指南正确配置 Docker 和 UFW,但仍然无法在容器中访问 Internet。

可能是什么问题?

Te *_* Ri 6

问题可能出在您使用docker-compose. 默认情况下,为docker-compose.yml文件中的服务创建新网络。这导致您不仅拥有docker0172.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
Run Code Online (Sandbox Code Playgroud)

其中 br-XXX 是接口名称,172.YYY.0.0/16 - 子网。

或者,docker0通过在您docker-compose.yml描述的每个服务中使用单个网络:

    network_mode: bridge
Run Code Online (Sandbox Code Playgroud)