Ich habe ein Docker-Image basierend auf
rabbitmq
.In meiner Docker-Datei sind keine Angaben zu Ports enthalten.
Ich binde die üblichen RabbitMQ-Ports (5671, 5672 und 15672) an meine benutzerdefinierten Ports, indem ich meine Instanz wie folgt ausführe:
docker run -d -p $someport:5671 -p 127.0.0.1::5672 -p $somemgtport:15672 myimage
In meiner iptables-INPUT-Kette befindet sich nichts, und die FORWARD-Kette ist mit dem üblichen Docker-Zeug gefüllt.
Das Problem
Wann $somemgtport
ist der Unterschied, dass 15672
ich von der Außenwelt nicht darauf zugreifen kann (auf die RabbitMQ-Verwaltungsschnittstelle über HTTP).
Aber es scheint, dass ich das -p
Flag richtig verwendet habe, da curl https://localhost:$somemgtport
es wie erwartet funktioniert (ebenso wie die amqp-Aufrufe an $someport).
Während der Ausführung sieht die DOCKER-Kette von iptables wie folgt aus:
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
Es öffnet also nicht die Ports $someport und $somemgtport, sondern die Ports, die dem „Inneren“ des Containers entsprechen: 5671 und 15672 (die von rabbitmq).
=> es scheint mir, dass es genau das Gegenteil von dem bewirkt, was ich erwarten würde …!
Was habe ich bei dem Befehl falsch gemacht docker run
?
NB: Ich möchte andere Ports als die Standardports, da ich zwei Instanzen von rabbitmq auf derselben Maschine ausführe.
Update – Hier ist eine Teilausgabe von netstat -pln
(mit someport=55001
und somemgtport=65002
):
tcp6 0 0 :::55001 :::* LISTEN 29613/docker-proxy
tcp6 0 0 :::65002 :::* LISTEN 29622/docker-proxy
netstat -pln | grep 15672
hat keinen Ausgang
Antwort1
Veralteter Hinweis: Diese Frage ist veraltet. Was auch immer sie damals erstellt haben mag, existiert nicht mehr. Docker hat schon vor langer Zeit aufgehört, iptables zu verwenden (um eine Portumleitung zu erreichen). Die Netzwerkschicht wurde seit der Veröffentlichung der Frage mindestens zweimal von Grund auf neu geschrieben.