关于docker和firewall端口冲突问题

前言

docker和firewall底层都会操作iptable

但是

docker操作的iptable不会在firewall上留记录

firewall每次重启也会重置iptable端口规则

这就导致了

1.后启动的docker服务,会 ”打洞“,firewall没有允许的端口也会开放出去

2.后启动firewall服务,会清空iptable规则,重置规则影响docker的容器启动

某些场景,服务启动会报错

也可以修改配置解决

Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-b16a4c094b07 -j RETURN: iptables: No chain/target/match by that name.
 (exit status 1))

解决方法

修改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 --reload

3. 查看
firewall-cmd --zone= public --query-port=80/tcp
 
4. 删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

5.指定IP与端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="5432" accept"

6.指定ip段可以访问 

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.3.0/24" port protocol="tcp" port="8200" accept"

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值