-
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