Portas abertas do Docker no iptables (rabbitmq)

Portas abertas do Docker no iptables (rabbitmq)
  • Estou tendo uma imagem docker baseada em rabbitmq.

  • Nada no meu Dockerfile especifica nada sobre portas.

  • Eu vinculo as portas normais do RabbitMQ (5671, 5672 e 15672) às minhas portas personalizadas executando minha instância da seguinte maneira:

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

  • Não há nada na minha cadeia INPUT do iptables, e a cadeia FORWARD é preenchida com o material usual do docker.

O problema

Quando $somemgtporté diferente de 15672não consigo acessá-lo (a interface de gerenciamento RabbitMQ via HTTP) do mundo externo.

Mas parece que usei o -psinalizador corretamente porque curl https://localhost:$somemgtportfunciona conforme o esperado (assim como as chamadas amqp para $someport).

Durante a execução, a cadeia DOCKER do iptables é a seguinte:

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

Portanto ele não abre as portas $someport e $somemgtport mas sim as portas que correspondem ao "interior" do container: 5671 e 15672 (as do RabbitMQ).

=> parece-me que está a fazer exactamente o contrário do que eu esperaria...!

O que eu fiz de errado com o docker runcomando?

NB: Quero outras portas além das padrão porque estou executando 2 instâncias do RabbitMQ na mesma máquina.


Atualização - Aqui está uma saída parcial de netstat -pln(with someport=55001and somemgtport=65002):

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

netstat -pln | grep 15672não tem saída

Responder1

Aviso de descontinuação: Essa pergunta está ultrapassada, o que quer que a tenha criado na época não existe mais. O Docker parou de usar iptables (para conseguir o redirecionamento de porta) há muito tempo, a camada de rede foi reescrita do zero pelo menos duas vezes desde que a pergunta foi postada.

informação relacionada