Docker открывает порты в iptables (rabbitmq)

Docker открывает порты в iptables (rabbitmq)
  • У меня есть образ Docker на основе rabbitmq.

  • В моем Dockerfile нет никаких указаний на порты.

  • Я привязываю обычные порты rabbitmq (5671, 5672 и 15672) к своим пользовательским портам, запуская свой экземпляр следующим образом:

    docker run -d -p $someport:5671 -p 127.0.0.1::5672 -p $somemgtport:15672 myimage

  • В моей цепочке INPUT iptables ничего нет, а цепочка FORWARD заполнена обычными вещами Docker.

Проблема

Когда $somemgtportотличается от 15672Я не могу получить к нему доступ (интерфейс управления rabbitmq через HTTP) из внешнего мира.

Но, похоже, я -pправильно использовал флаг, потому что curl https://localhost:$somemgtportон работает так, как и ожидалось (как и вызовы amqp к $someport).

При запуске цепочка DOCKER iptables выглядит следующим образом:

Chain DOCKER (1 references)
 target     prot opt in     out     source               destination
 ACCEPT     tcp  --  !docker0 docker0  anywhere             xyz  tcp dpt:15672
 ACCEPT     tcp  --  !docker0 docker0  anywhere             xyz  tcp dpt:5671
 ACCEPT     tcp  --  !docker0 docker0  anywhere             xyz  tcp dpt:amqp

Таким образом, он открывает не порты $someport и $somemgtport, а порты, которые соответствуют «внутренней части» контейнера: 5671 и 15672 (те, что из rabbitmq).

=> мне кажется, что он делает прямо противоположное тому, чего я ожидал...!

Что я сделал не так с docker runкомандой?

Примечание: Мне нужны порты, отличные от портов по умолчанию, поскольку я запускаю 2 экземпляра rabbitmq на одной машине.


Обновление — вот частичный вывод netstat -plnsomeport=55001и somemgtport=65002):

tcp6       0      0 :::55001                :::*                    LISTEN      29613/docker-proxy
tcp6       0      0 :::65002                :::*                    LISTEN      29622/docker-proxy

netstat -pln | grep 15672не имеет выхода

решение1

Уведомление об устаревании: Этот вопрос устарел, то, что могло создать его в то время, больше не существует. Docker давно перестал использовать iptables (для перенаправления портов), сетевой уровень был переписан с нуля как минимум дважды с момента публикации вопроса.

Связанный контент