Wie kann ich mit Docker mehr als einen Port verfügbar machen?

Antworten:

715

Um nur einen Port verfügbar zu machen, müssen Sie Folgendes tun:

docker run -p <host_port>:<container_port>

Geben Sie einfach mehrere -pArgumente an, um mehrere Ports verfügbar zu machen:

docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>
Tania Ang
quelle
4
Vielen Dank! Fand dies in den Dokumenten hier: docs.docker.com/userguide/dockerlinks/… wo es heißtNote: The -p flag can be used multiple times to configure multiple ports.
Ted M. Young
Gibt es eine Möglichkeit, die Ports in einer Konfigurationsdatei anzugeben? Zum Beispiel mit der Option --env-file?
Giovanni Bitliner
8
@GiovanniBitliner Ich bin noch ziemlich neu in diesem Bereich, aber ich bin mir ziemlich sicher, dass Sie Ports in einer Docker-Datei mit EXPOSE definieren und dann ausführen docker run -P(beachten Sie den Großbuchstaben), wodurch automatisch alle mit EXPOSE in der Docker-Datei definierten Ports verfügbar gemacht werden
Ted Avery
Mehrere Ports können den Init-Prozess unter einer systemd-Servicedatei anhalten?
Lanti
1
Ich denke, der richtige Begriff ist hier publishnicht expose.
Tgogos
289

Schritt 1

In Ihrem Dockerfilekönnen Sie das Verb verwenden EXPOSE, um mehrere Ports verfügbar zu machen.
z.B

EXPOSE 3000 80 443 22

Schritt 2

Sie möchten dann ein neues Bild basierend auf oben erstellen Dockerfile.
z.B

docker build -t foo:tag .

Schritt 3

Dann können Sie mit der -pHost - Port mit dem Containerhafen auf der Karte, wie in oben EXPOSEvon Dockerfile.
z.B

docker run -p 3001:3000 -p 23:22

Wenn Sie eine Reihe fortlaufender Ports verfügbar machen möchten, können Sie Docker wie folgt ausführen:

docker run -it -p 7100-7120:7100-7120/tcp 
Mainframer
quelle
17
EXPOSE ist nur eine Dokumentation für die veröffentlichten Ports und nur zum Verknüpfen nützlich. Eine vollständige Liste der Ports finden Sie mit -P. Sie werden automatisch einem verfügbaren Port auf dem Host zugeordnet.
Arun Gupta
4
Belichten ist nicht erforderlich. Entfernen Sie den ersten Schritt oder machen Sie ihn optional.
AmirHossein
27

Wenn Sie docker-compose.ymlDatei verwenden:

services:
    varnish:
        ports:
            - 80
            - 6081

Sie können auch den Host- / Netzwerkport angeben

varnish:
    ports:
        - 80:80
        - 6081:6081
Rashidul Islam
quelle
0

Wenn Sie einen Container aus einem Image erstellen und mehrere Ports verfügbar machen möchten (nicht veröffentlichen), können Sie den folgenden Befehl verwenden:

Docker erstellen --name container name--expose 7000 --expose 7001image name

Wenn Sie diesen Container jetzt mit dem docker startBefehl starten , werden die oben konfigurierten Ports angezeigt.

PhantomReferenz
quelle