Docker виставляє всі порти або діапазон портів від 7000 до 8000


97

Чи можу я вказати діапазон портів у файлі Docker

EXPOSE 7000-8000

і при запуску контейнера прив'язувати всі ці відкриті порти до тих самих портів на хост-машині?

docker run -p 7000-8000:7000-8000

Відповіді:


133

Починаючи з Docker 1.5, тепер ви можете виставляти цілий ряд портів для інших пов'язаних контейнерів, використовуючи:

Dockerfile піддають команду:

EXPOSE 7000-8000

або команда запуску Docker :

docker run --expose=7000-8000

Або замість цього ви можете опублікувати діапазон портів на хост-машині за допомогою команди Docker run :

docker run -p 7000-8000:7000-8000


14
Перевірте вихід "iptables -L -n" на хост-машині, і ви побачите сотні рядків кожен для відображення одного порту. Якщо ви даєте 5000-50000, то практично вам доведеться довго чекати. Це передбачувана поведінка?
vr devrimbaris

8
@ ᐅ devrimbaris Існує також процес запуску докера для кожного порту . Я вважаю, що саме це займає більшу частину робочого часу.
Метт

1
Документи говорять про --publish-all , -Pпрапор, який "Опублікувати всі відкриті порти до випадкових портів". docs.docker.com/engine/reference/commandline/run
nils petersohn

2

Для всіх, хто стикається з цією проблемою і закінчує цю публікацію ... проблема все ще відкрита - https://github.com/moby/moby/issues/11185


Велике спасибі. Я збожеволів, коли все застрягло при спробі викрити діапазон тисячі портів.
sarusso
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.