关于docker和firewall端口冲突问题
前言docker和firewall底层都会操作iptable但是docker操作的iptable不会在firewall上留记录firewall每次重启也会重置iptable端口规则这就导致了1.后启动的docker服务,会 ”打洞“,firewall没有允许的端口也会开放出去2.后启动firewall服务,会清空iptable规则,重置规则影响docker的容器启动解决方法修改docker配置,不
前言
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 --reload3. 查看
firewall-cmd --zone= public --query-port=80/tcp
4. 删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent5.指定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"
更多推荐
所有评论(0)