Tra*_*rse 5 port containers docker centos7 firewalld
我在 centos7 docker 容器上安装了 nginx。
端口 80 可从外部使用,尽管该端口未在防火墙中打开。公共区域规则如下:
# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eno3
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
Run Code Online (Sandbox Code Playgroud)
但是 DOCKER 链中这个端口有一条自动规则:
# iptables -L DOCKER
Chain DOCKER (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:http
Run Code Online (Sandbox Code Playgroud)
如何从外部关闭此端口?我已经运行了该命令,但没有帮助:
# firewall-cmd --zone=public --remove-port=80/tcp --permanent
Warning: NOT_ENABLED: 80:tcp
success
Run Code Online (Sandbox Code Playgroud)
我已阅读文档 - https://docs.docker.com/engine/userguide/networking/ 但仍然不明白..实际上我只需要为我指定的网络 1.2.3.4/24 打开此端口 80。
小智 1
Docker 默认设置 iptables 规则。有关更多信息,请参阅Docker 的了解容器通信。您还可以在 Docker 守护进程中使用 禁用此功能--iptables=false。
或者,使用 docker-compose 文件版本 2+,您可以使用关键字expose,而不是ports仅在文件中的 Docker 网络内打开此端口docker-compose.yml。
也就是说,如果您想使用firewalld,您可能应该禁用 iptables。
| 归档时间: |
|
| 查看次数: |
2977 次 |
| 最近记录: |