【发布时间】:2019-10-05 16:35:18
【问题描述】:
我已经安装了一个 docker 服务:
docker run --rm --name some-nginx -d -p 8080:80 nginx:stable-alpine
然后我为它添加了 iptable 规则:
PORT=8080
/sbin/iptables -A OUTPUT -p tcp --dport $PORT -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport $PORT -m state --state ESTABLISHED -j ACCEPT
当我尝试检查端口是否打开时,它说它是打开的:
$netstat -anp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 11211/docker-proxy
当我尝试进行更多调查时,它似乎仍然开放:
iptables-save | grep 8080
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 172.17.0.3:80
-A INPUT -p tcp -m tcp --sport 8080 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 8080 -m state --state NEW,ESTABLISHED -j ACCEPT
我看到 docker 添加了一些规则,但我的规则存在。
问题是我无法在给定端口连接到 nginx!
telnet XX.XX.XX.XX 8080
Trying XX.XX.XX.XX...
telnet: Unable to connect to remote host: Connection timed out
当我关闭 iptables 时,即使浏览器提供 nginx 起始页,它也能正常工作。
如何启用 iptables 或 docker 以使用给定的端口?
【问题讨论】:
标签: docker centos centos7 iptables