Ist es möglich, dass ein Docker-Containerzugriffsport vom Host geöffnet wird? Konkret habe ich MongoDB und RabbitMQ auf dem Host ausgeführt und möchte einen Prozess in einem Docker-Container ausführen, um die Warteschlange abzuhören und (optional) in die Datenbank zu schreiben.
Ich weiß, dass ich einen Port vom Container an den Host weiterleiten kann (über die Option -p) und über den Docker-Container eine Verbindung zur Außenwelt (dh zum Internet) herstellen kann, möchte jedoch die Ports RabbitMQ und MongoDB nicht verfügbar machen vom Gastgeber nach außen.
EDIT: einige Klarstellung:
Starting Nmap 5.21 ( http://nmap.org ) at 2013-07-22 22:39 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00027s latency).
PORT STATE SERVICE
6311/tcp open unknown
joelkuiper@vps20528 ~ % docker run -i -t base /bin/bash
root@f043b4b235a7:/# apt-get install nmap
root@f043b4b235a7:/# nmap 172.16.42.1 -p 6311 # IP found via docker inspect -> gateway
Starting Nmap 6.00 ( http://nmap.org ) at 2013-07-22 20:43 UTC
Nmap scan report for 172.16.42.1
Host is up (0.000060s latency).
PORT STATE SERVICE
6311/tcp filtered unknown
MAC Address: E2:69:9C:11:42:65 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 13.31 seconds
Ich musste diesen Trick ausführen, um eine Internetverbindung mit dem Container herzustellen: Meine Firewall blockiert Netzwerkverbindungen vom Docker-Container nach außen
BEARBEITEN : Schließlich habe ich eine benutzerdefinierte Brücke mithilfe von Rohrleitungen erstellt und die Dienste die IP-Adressen der Brücke abhören lassen. Ich habe mich für diesen Ansatz entschieden, anstatt MongoDB und RabbitMQ auf der Docker-Bridge abhören zu lassen, da dies mehr Flexibilität bietet.