Docker mengekspos semua port atau jangkauan port dari 7000 hingga 8000

100

Dapatkah saya menentukan rentang port di Dockerfile

EXPOSE 7000-8000

dan ketika menjalankan kontainer, ikat semua port yang terbuka ini ke port yang sama pada mesin host?

docker run -p 7000-8000:7000-8000
DarVar
sumber
2
Kemungkinan duplikat Docker: Tunjukkan berbagai port
Michael Irigoyen

Jawaban:

137

Sejak Docker 1.5 Anda sekarang dapat mengekspos berbagai port ke kontainer terkait lainnya menggunakan:

Perintah Dockerfile EXPOSE :

EXPOSE 7000-8000

atau Perintah jalankan Docker :

docker run --expose=7000-8000

Atau sebagai gantinya Anda dapat mempublikasikan berbagai port ke mesin host melalui perintah jalankan Docker :

docker run -p 7000-8000:7000-8000

DarVar
sumber
14
Periksa keluaran "iptables -L -n" pada mesin host dan Anda akan melihat ratusan baris masing-masing untuk pemetaan port tunggal. Jika Anda memberikan 5000-50000, maka praktis Anda harus menunggu lama. Apakah ini perilaku yang seharusnya?
ᐅ devrimbaris
8
@ ᐅ devrimbaris Ada juga proses buruh pelabuhan yang diluncurkan per port . Saya yakin inilah yang menghabiskan sebagian besar waktu kerja.
Matt
1
dokumen berbicara tentang --publish-all , -Pflag yang "Publikasikan semua port yang terekspos ke port acak". docs.docker.com/engine/reference/commandline/run
nils petersohn
4

Untuk siapa pun yang menghadapi masalah ini dan berakhir di posting ini ... masalahnya masih terbuka - https://github.com/moby/moby/issues/11185

Gh0sT
sumber
Terima kasih banyak. Saya menjadi gila karena semuanya macet ketika mencoba untuk mengekspos berbagai seribu port.
sarusso
Apakah Anda menemukan solusi untuk mengekspos kisaran seribu pot? @sarusso
dko