Docker TAMPILKAN port hanya ke Host

100

Apakah buruh pelabuhan mampu mengekspos port hanya ke host dan bukan ke luar.

Saya perlu menjalankan buruh pelabuhan dengan database mongo, dan saya ingin itu hanya dapat diakses dari host, tetapi saya perlu menghubungkan port host 27017.

Apakah ini mungkin, atau apakah satu-satunya cara yang mungkin adalah mengubah definisi firewall?

Ruben
sumber

Jawaban:

142

Tentu, ikat saja ke localhost, seperti ini:

buruh pelabuhan menjalankan -p 127.0.0.1:27017:27017

Juga: Host Anda juga dapat berbicara dengan setiap container secara normal melalui IP-nya. Gunakan docker inspect $IDuntuk mendapatkan json dump (di samping hal lain) yang berisi IP jaringan.

ZeissS
sumber
4
Jadi apakah itu seperti [1] buruh pelabuhan run -p 27017: 27017 -v / var / lib / mongodb / master: / data mongo: storage_test / usr / bin / start-mongo [2] buruh pelabuhan run -p 127.0.0.1: 27017: 27017 ...?
Ruben
17
Opsi kedua mengikat ke localhost, ya. Yang pertama membuat port tersedia untuk umum. Jika Anda tidak menginginkan port statis, gunakan 127.0.0.1::27017.
ZeissS
3
Solusi ini tampaknya tidak berfungsi untuk mode swarm, lihat masalah github ini
bsimpson53
1
apakah docker-compose setara service-name: { ... ports: [ "127.0.0.1:27017:27017" ] }?
Groostav
1
Apa masalah di docker-compose saya meskipun mengikat ke localhost saja tetapi dapat diakses publik. stackoverflow.com/questions/50621936/…
Tara Prasad Gurung