前言
docker和firewall底层都会操作iptable
但是
docker操作的iptable不会在firewall上留记录
firewall每次重启也会重置iptable端口规则
这就导致了
1.后启动的docker服务,会 ”打洞“,firewall没有允许的端口也会开放出去
2.后启动firewall服务,会清空iptable规则,重置规则影响docker的容器启动
解决方法
修改docker配置,不操作iptable
# 修改配置
vim /etc/docker/daemon.json
{
"iptables":false
}
systemctl restart docker
# 添加所需端口
#mysql
firewall-cmd --add-port=3306/tcp --permanent
#nacos
firewall-cmd --zone=public --add-port=8848/tcp --permanent
#xxl-job
firewall-cmd --zone=public --add-port=7009/tcp --permanent
#web
firewall-cmd --zone=public --add-port=8000/tcp --permanent
#gateway
firewall-cmd --add-port=8099/tcp --permanent
#redis
firewall-cmd --add-port=6379/tcp --permanent
#swagger
firewall-cmd --add-port=18000/tcp --permanent
firewall-cmd --list-ports
附录(firewall命令操作)
1. 添加(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
2. 重新载入(修改规则后使其生效)
firewall-cmd --reload3. 查看
firewall-cmd --zone= public --query-port=80/tcp
4. 删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent