docker使容器的端口向公众开放
我有nginx的centos7docker集装箱。
尽pipe该端口未在Firewalld中打开,但外部端口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:
但是链中的这个端口有一个自动规则DOCKER:
# iptables -L DOCKER Chain DOCKER (1 references) target prot opt source destination ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:http
如何从外面closures这个端口? 我已经跑了命令,但没有帮助:
# firewall-cmd --zone=public --remove-port=80/tcp --permanent Warning: NOT_ENABLED: 80:tcp success
我读过文档 – https://docs.docker.com/engine/userguide/networking/,但仍然没有得到它..其实我需要打开这个端口80只为我指定的networking1.2.3.4/24。
Docker默认设置iptables规则。 请参阅Docker的了解容器通信以获取更多信息。 你也可以在Docker守护进程中用--iptables=false
来禁用这个function。
docker-compose文件版本2或者替代地,您可以使用expose
关键字而不是端口在Docker docker-compose.yml
文件中仅在Dockernetworking中打开此端口。
也就是说,如果你想使用firewalld,你应该禁用iptables。