Portas abertas do Docker no iptables (rabbitmq)

2
  • Estou tendo uma imagem do docker baseada em rabbitmq .

  • Nada no meu Dockerfile especifica nada sobre as portas.

  • Eu vinculo as portas rabbitmq usuais (5671, 5672 e 15672) às minhas portas personalizadas executando minha instância da seguinte forma:

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

  • Não há nada na cadeia INPUT do iptables, e a cadeia FORWARD está preenchida com o material de encaixe usual.

O problema

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

Mas parece que usei o sinalizador -p corretamente porque curl https://localhost:$somemgtport funciona como esperado (bem como as chamadas amqp para $ someport).

Quando em 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 contêiner: 5671 e 15672 (as do rabbitmq).

= > parece-me que está fazendo exatamente o contrário do que eu esperaria ...!

O que eu fiz de errado com o comando docker run ?

NB: Eu quero outras portas que não as padrão porque estou executando 2 instâncias de rabbitmq na mesma máquina.

Atualização - Veja uma saída parcial de netstat -pln (com someport=55001 e somemgtport=65002 ):

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

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

    
por lajarre 27.02.2015 / 13:22

1 resposta

0

Aviso de descontinuação : essa pergunta está desatualizada, o que pode ter sido criado no momento não existe mais. O Docker parou de usar o iptables (para obter redirecionamento de porta) há muito tempo, a camada de rede foi reescrita do zero pelo menos duas vezes desde que a pergunta foi postada.

    
por 29.04.2017 / 23:32