Я использую 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:
У меня две активные зоны: trusted
и public
вот вывод команды firewall-cmd --zone=trusted --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
перед определением порта хоста.