docker部署的服务清空防火墙规则后如何恢复?
##背景:
我的mysql数据库是通过docker部署的,通过 Iptables -F 清空防火墙规则后,mysql数据库就连不上了,导致应用无法访问,这时候就要恢复之前的防火墙规则才能访问数据库,但是要如何恢复呢?
1、防火墙规则清空之前,iptables -L 如下:
2、防火墙规则清空之后,iptables -F && iptables -L 如下:
##解决办法
重启docker服务
# systemctl stop docker.service
# systemctl start docker.service
##重启之后
之前清空的防火墙规则又恢复了,mysql恢复正常访问
##附加:
重启docker服务也能解决启动container的时候出现iptables: No chain/target/match by that name的报错!
##原因:
使用的centos7服务器,在部署docker的过程中,因端口问题有启停firewalld服务,在centos7里使用firewalld代替了iptables。在启动firewalld之后,iptables还会被使用,属于引用的关系。所以在docker run的时候,iptables list里没有docker chain,重启docker engine服务后会被加入到iptables list里面。
好了,这就是docker部署的服务清空防火墙规则后如何恢复的办法了,如有疑问可与博主一起交流讨论!