Я использую centos 7 с firewallD на моем сервере.
Я также установил докер на этой машине и добавил его в доверенную зону своего брандмауэра.
У меня есть контейнер, который прослушивает порт 9081
, но этот порт не открыт на брандмауэре, и странно то, что порт доступен с моего домашнего компьютера.
Это результат firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 443/tcp 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
У меня две активные зоны: доверенная
и общедоступная
вот результат команды firewall-cmd --zone = trust --list-all
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces: docker0
sources:
services:
ports: 4243/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Очевидно, что порт 9081
не открыт ни в одной зоне, но все же я могу получить к нему доступ. Зачем? как его закрыть?
Я понял, что при запуске Docker с firewallD возникают некоторые ошибки.
Простой обходной путь — изменить то, как вы определяете свои порты в докере. в моем случае мне пришлось изменить свой docker-compose на это:
ports:
- "127.0.0.1:9081:8081"
Важной частью является использование 127.0.0.1
перед определением порта хоста.