通过防火墙管理Docker 容器映射端口

345 阅读1分钟

创建容器网络

docker network create --driver bridge --subnet 192.168.1.0/24 --gateway 192.168.1.1 bianyuan

容器配置

启动指定network及内部网络ip(不再暴露端口)

--network=bianyuan --ip 192.168.1.8

启动防火墙

systemctl start firewalld

打开端口

firewall-cmd --add-port=3000/tcp --permanent

  • 批量打开端口命令
    firewall-cmd --permanent --zone=public --add-port=100-500/tcp
    firewall-cmd --permanent --zone=public --add-port=100-500/udp

重启生效

firewall-cmd --reload

查看所有配置信息

firewall-cmd --list-all

允许http

firewall-cmd --zone=public --add-service=http

添加端口到容器的映射

firewall-cmd --add-forward-port=port=3000:proto=tcp:toaddr=192.168.1.8:toport=8080 --permanent

查看开放的端口

firewall-cmd --list-ports

查询端口是否开放

firewall-cmd --query-port=8080/tcp

关闭端口

firewall-cmd --zone=public --remove-port=3000/tcp --permanent
(重启才生效 注意是tcp 还是tcp6)

查看配置

cat /etc/firewalld/zones/public.xml

限制访问端口的IP

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.160.142.166" port protocol="tcp" port="3000" reject"


firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.160.142.166" port protocol="tcp" port="3000" accept"
(可直接编辑规则文件重新加载)

允许防火墙伪装IP

firewall-cmd --add-masquerade --permanent

查看限制规则

firewall-cmd --zone=public --list-rich-rules(修改重启后看到变化)