Я установил службу 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
Я вижу, что докер добавил некоторые правила, но мои правила присутствуют.
Проблема в том, что я не могу подключиться к 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 для работы с данным портом?