Docker EXPOSE พอร์ตไปยังโฮสต์เท่านั้น


103

นักเทียบท่าสามารถเปิดเผยพอร์ตเฉพาะกับโฮสต์และไม่เปิดเผยสู่ภายนอก

ฉันต้องการให้นักเทียบท่าทำงานกับฐานข้อมูล mongo และฉันต้องการให้สามารถเข้าถึงได้จากโฮสต์เท่านั้น แต่ฉันต้องเชื่อมโยงพอร์ตโฮสต์ 27017

เป็นไปได้หรือวิธีเดียวที่เป็นไปได้คือการเปลี่ยนคำจำกัดความของไฟร์วอลล์

คำตอบ:


148

แน่นอนเพียงผูกเข้าlocalhostกับสิ่งนี้:

นักเทียบท่าวิ่ง -p 127.0.0.1:27017:27017

นอกจากนี้: โฮสต์ของคุณยังสามารถพูดคุยกับแต่ละคอนเทนเนอร์ได้ตามปกติผ่าน IP ของมัน ใช้docker inspect $IDเพื่อรับ json dump (ข้างสิ่งอื่น ๆ ) ที่มี IP ของเครือข่าย


4
ดังนั้นมันจึงเป็นเช่น [1] docker run -p 27017: 27017 -v / var / lib / mongodb / master: / data mongo: storage_test / usr / bin / start-mongo [2] docker run -p 127.0.0.1: 27017: 27017 ... ?
Ruben

17
ตัวเลือกที่สองผูกกับ localhost ใช่ อันแรกทำให้พอร์ตพร้อมใช้งานแบบสาธารณะ หากคุณไม่ต้องการพอร์ตแบบคงที่ให้ใช้127.0.0.1::27017.
ZeissS

3
โซลูชันนี้ดูเหมือนจะไม่ทำงานสำหรับโหมด swarm โปรดดูปัญหา github นี้
bsimpson53

1
Docker-compose ที่เทียบเท่ากันservice-name: { ... ports: [ "127.0.0.1:27017:27017" ] }คืออะไร?
Groostav

1
ปัญหาในการเขียนเทียบท่าของฉันคืออะไรแม้ว่าจะเชื่อมโยงกับ localhost เท่านั้น แต่สามารถเข้าถึงได้โดยสาธารณะ stackoverflow.com/questions/50621936/…
Tara Prasad Gurung
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.