# docker防火墙设置
docker使用的防火墙是使用iptables的DOCKER-USER链,启动时会自动添加
Chain DOCKER-USER (1 references)
return all -- 0.0.0.0/0 0.0.0.0/0
此时无论在firewall-cmd上怎么设置,所有容器都可以访问,需要把上面的规则删除掉
iptables -D DOCKER-USER 1
容器允许访问外网
iptables -A DOCKER-USER -m state --state ESTABLISHED,RELATED -j ACCEPT
添加容器之间的访问规则,
iptables -A DOCKER-USER -s 172.17.0.0/16 -j ACCEPT
##可访问的ip段根据实际调整
添加内网ip的访问规则,允许访问
iptables -A DOCKER-USER -s 192.168.0.0/16 -j ACCEPT
#可访问的ip段根据实际调整
开放nginx容器的端口可被访问
iptables -A DOCKER-USER -p tcp --dport 80 -j ACCEPT
iptables -A DOCKER-USER -p tcp --dport 443 -j ACCEPT
重点,其它都不能访问
iptables -A DOCKER-USER -j DROP
最后COCKER-USER 链大概如下
Chain DOCKER-USER (1 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 192.168.6.0/24 0.0.0.0/0
ACCEPT all -- 172.17.0.0/16 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
DROP all -- 0.0.0.0/0 0.0.0.0/0
要临时开放某个接口
iptables -I DOCKER-USER -p tcp --dport 15672 -j ACCEPT
#插入第一条
#处理完成后,删除掉第一条
iptables -D DOCKER-USER 1
/usr/bin/bash
#常规例子
#删除原来的链:return all -- 0.0.0.0/0 0.0.0.0/0
iptables -D DOCKER-USER 1
#容器允许访问外网
iptables -A DOCKER-USER -m state --state ESTABLISHED,RELATED -j ACCEPT
#容器之间可访问
iptables -A DOCKER-USER -s 172.17.0.0/16 -j ACCEPT
#局域网可访问容器
iptables -A DOCKER-USER -s 192.168.0.0/16 -j ACCEPT
#容器端口80/443可被外网访问
iptables -A DOCKER-USER -p tcp --dport 80 -j ACCEPT
iptables -A DOCKER-USER -p tcp --dport 443 -j ACCEPT
#其它都不能访问
iptables -A DOCKER-USER -j DROP
← docker常用命令 docker笔记 →