Чи можливо відкрити хост до портів контейнерів Docker? Конкретно у мене MongoDB та RabbitMQ працюють на хості, і я хотів би запустити процес у контейнері Docker, щоб прослухати чергу та (необов'язково) записати в базу даних.
Я знаю, що можу переслати порт від контейнера до хоста (через опцію -p) і мати зв’язок із зовнішнім світом (тобто Інтернетом) зсередини контейнера Docker, але я хотів би не виставляти порти RabbitMQ та MongoDB від господаря до зовнішнього світу.
EDIT: деяке уточнення:
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
Мені довелося зробити цей трюк, щоб отримати будь-яке з'єднання з Інтернетом під час контейнера: Мій брандмауер блокує мережеві з'єднання від контейнера докера до зовні
EDIT : Врешті-решт я пішов зі створенням власного мосту, використовуючи трубопроводи та надаючи послуги прослуховуванню IP-адрес мосту. Я пішов із таким підходом замість того, щоб MongoDB та RabbitMQ слухали на докерському мосту, оскільки це дає більшу гнучкість.