Docker macht alle Ports oder Portbereiche von 7000 bis 8000 verfügbar

95

Kann ich einen Portbereich in einer Docker-Datei angeben?

EXPOSE 7000-8000

und beim Ausführen des Containers alle diese exponierten Ports an dieselben Ports auf dem Hostcomputer binden?

docker run -p 7000-8000:7000-8000
DarVar
quelle
2
Mögliches Duplikat von Docker: Legen Sie eine Reihe von Ports frei
Michael Irigoyen

Antworten:

132

Seit 1.5 Docker können Sie jetzt aussetzen eine Reihe von Ports zu anderen verknüpften Container mit:

Der Dockerfile EXPOSE- Befehl:

EXPOSE 7000-8000

oder Der Docker- Ausführungsbefehl :

docker run --expose=7000-8000

Oder stattdessen können Sie veröffentlichen eine Reihe von Ports an der Host - Maschine über Docker Lauf - Befehl:

docker run -p 7000-8000:7000-8000

DarVar
quelle
14
Überprüfen Sie die Ausgabe von "iptables -L -n" auf dem Host-Computer, und Sie sehen jeweils Hunderte von Zeilen für die Zuordnung einzelner Ports. Wenn Sie 5000-50000 geben, müssen Sie praktisch lange warten. Ist dies das vermeintliche Verhalten?
Devrimbaris 22.
8
@ ᐅ devrimbaris Pro Port wird auch ein Docker-Prozess gestartet . Ich glaube, das nimmt den größten Teil der Arbeitszeit in Anspruch.
Matt
1
In den Dokumenten wird über das --publish-all , -PFlag "Alle exponierten Ports an zufälligen Ports veröffentlichen" gesprochen. docs.docker.com/engine/reference/commandline/run
nils petersohn
2

Für alle, die mit diesem Problem konfrontiert sind und in diesem Beitrag landen ... ist das Problem noch offen - https://github.com/moby/moby/issues/11185

Gh0sT
quelle
Vielen Dank. Ich wurde verrückt, als alles feststeckte, als ich versuchte, eine Reichweite von tausend Ports freizulegen.
Sarusso