เป็นไปได้หรือไม่ที่จะเปิดพอร์ตการเข้าถึงคอนเทนเนอร์ Docker โดยโฮสต์? เป็นรูปธรรมฉันมี MongoDB และ RabbitMQ ทำงานบนโฮสต์และฉันต้องการเรียกใช้กระบวนการในคอนเทนเนอร์ Docker เพื่อฟังคิวและ (เป็นทางเลือก) เขียนไปยังฐานข้อมูล
ฉันรู้ว่าฉันสามารถส่งต่อพอร์ตจากคอนเทนเนอร์ไปยังโฮสต์ (ผ่านตัวเลือก -p) และมีการเชื่อมต่อกับโลกภายนอก (เช่นอินเทอร์เน็ต) จากภายในคอนเทนเนอร์ Docker แต่ฉันไม่ต้องการเปิดเผย RabbitMQ และ MongoDB พอร์ต จากโฮสต์สู่โลกภายนอก
แก้ไข: ชี้แจงบางส่วน:
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
ฉันต้องทำเคล็ดลับนี้เพื่อให้ได้รับการเชื่อมต่ออินเทอร์เน็ตภายในคอนเทนเนอร์: ไฟร์วอลล์ของฉันกำลังบล็อกการเชื่อมต่อเครือข่ายจากคอนเทนเนอร์ docker ไปยังภายนอก
แก้ไข : ในที่สุดฉันก็ไปกับการสร้างสะพานที่กำหนดเองโดยใช้งานปิเปตและให้บริการฟังบน IP ของบริดจ์ ฉันใช้วิธีนี้แทนการให้ MongoDB และ RabbitMQ ฟังบน docker bridge เพราะมันให้ความยืดหยุ่นมากกว่า