【发布时间】:2021-05-29 08:30:13
【问题描述】:
我在 centos7 docker 容器上安装了 nginx。
端口 80 可从外部使用,尽管此端口未在 firewalld 中打开。 这里的公共区域规则:
# 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:
但在链 DOCKER 中有此端口的自动规则:
# iptables -L DOCKER
Chain DOCKER (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:http
如何从外部关闭这个端口? 我已经运行了命令,但没有帮助:
# firewall-cmd --zone=public --remove-port=80/tcp --permanent
Warning: NOT_ENABLED: 80:tcp
success
我已阅读文档 - https://docs.docker.com/engine/userguide/networking/ 但还是不明白。。 实际上我只需要为我指定的网络 1.2.3.4/24 打开这个端口 80。
【问题讨论】:
-
这个 ip
172.17.0.2属于 docker 的软件定义网络,不能从主机外部直接访问。您是否尝试过从外部访问它? -
如何从外部访问此网络(172.17.0.0/24)?我只能访问 external_ip_docker_host:80 并且儿子不明白如何关闭此访问。
标签: docker containers port centos7 firewalld