一般来说安装完docker之后,它就会在iptables里创建几个chain,它需要通过iptables来实现自身的网络功能。
比如你启动容器时候使用指定 -p 8080:8080参数,就会发现它往IPTABLES里写了一些东西
iptables -L DOCKER
iptables --list
命令可以查看,
不过这个规则透过firewalld是看不到的,较新版本的redhat中加入FIREWALLD主要是为了引入区域概念、简化操作和易于理解,说白了就是用于解放iptables冗长的命令。
可他却是透过IPTABLES来完成自身功能的,本质上FIREWALLD是建立在IPTABLES之上的一个应用。
结论:docker并不是绕过了防火墙,只是应为它往iptables里写了规则,你在firewalld里看不到而已。
docker这个“接管”iptables的问题引起了很多用户的反对