На первом шаге я хочу заблокировать весь входящий трафик в док-контейнеры, запущенные на моем сервере. Поэтому я использую следующую запись iptables для ip моего внешнего интерфейса (ext_if):
iptables -I DOCKER-USER -i eth0 ! -s ext_if -j DROP
Затем я хочу открыть определенный порт для контейнера, который настроен в docker-compose (мой docker-compose.yml ниже) файл:
iptables -I DOCKER-USER -i docker0 -s 0.0.0.0/0 -p tcp --dport 9000 -j ACCEPT
Когда я пытаюсь открыть http://myserver:9000 в браузере извне, он не будет работать.
Что я могу сделать, чтобынастроить порт 9000 для доступа извне?
Я использую docker 19.03.2 и docker-compose 1.18.0 на выделенном сервере.
Это мой файл docker-compose.yml:
version: '3.3'
services:
test-tomcat:
image: tomcat:9.0.19-jre8
ports:
- 9000:8080
container_name: test-tomcat
restart: always
entrypoint: catalina.sh jpda run
test-tomcat2:
image: tomcat:9.0.19-jre8
ports:
- 9001:8080
container_name: test-tomcat2
restart: always
entrypoint: catalina.sh jpda run
Я немного поиграл с правилами iptable и понял, что
iptables -I DOCKER-USER -i docker0 -s 0.0.0.0/0 -p tcp --dport 8080 -j ACCEPT
даст мне доступ к http://myserver:9000 и http://myserver:9001.Я думаю, это потому, что оба контейнера слушают 8080 внутри.