在使用 OpenSUSE Leap 15.3 和 Docker 的环境中,如果你遇到了 FirewallD 阻止到 Docker 容器的入站连接问题,这通常是因为 FirewallD 的默认配置可能不允许外部连接到 Docker 创建的网络接口。为了解决这个问题,你需要对 FirewallD 进行一些配置调整,以允许特定的网络流量进入 Docker 容器。
首先,确认问题确实是由 FirewallD 引起的。你可以暂时停用 FirewallD 来看看是否能解决连接问题:
sudo systemctl stop firewalld
如果在停用 FirewallD 后能成功连接到 Docker 容器,那么问题很可能是由防火墙配置引起的。
重新启动 FirewallD,并开始调整设置:
sudo systemctl start firewalld
你需要确保 Docker 使用的网络和端口被 FirewallD 允许。Docker 默认使用 docker0
网桥,你可以将其添加到 FirewallD 的受信任区域:
sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
如果你的 Docker 容器监听特定端口,确保这些端口在 FirewallD 中开放。例如,如果你的容器在端口 8080 上监听,执行:
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
修改配置后,需要重新加载 FirewallD 以应用更改:
sudo firewall-cmd --reload
检查你的配置是否正确应用:
sudo firewall-cmd --list-all
这将显示所有区域的配置,包括开放的端口和活动的接口。
在完成上述配置后,尝试重新连接到你的 Docker 容器,看看问题是否已经解决。
docker-compose.yml
文件中的端口设置正确。