Come posso esporre più di 1 porta con Docker?


Risposte:


716

Per esporre solo una porta, questo è ciò che devi fare:

docker run -p <host_port>:<container_port>

Per esporre più porte, è sufficiente fornire più -pargomenti:

docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>

4
Grazie! Ho trovato questo nei documenti qui: docs.docker.com/userguide/dockerlinks/… dove diceNote: The -p flag can be used multiple times to configure multiple ports.
Ted M. Young

C'è un modo per specificare le porte in un file di configurazione? Ad esempio usando l'opzione --env-file?
Giovanni Bitliner

8
@GiovanniBitliner Sono ancora abbastanza nuovo per questo, ma sono abbastanza sicuro che definirebbe le porte in un Dockerfile con ESPORRE , quindi eseguire docker run -P(notare la maiuscola), che espone automaticamente tutte le porte definite con ESPORRE nel Dockerfile
Ted Avery

Più porte possono interrompere il processo di init in un file di servizio systemd?
Lanti,

1
Penso che il termine corretto qui publishnon lo sia expose.
tgogos,

290

Passo 1

Nel tuo Dockerfile, puoi usare il verbo EXPOSEper esporre più porte.
per esempio

EXPOSE 3000 80 443 22

Passo 2

Vorresti quindi creare una nuova immagine basata su sopra Dockerfile.
per esempio

docker build -t foo:tag .

Fase 3

Quindi è possibile utilizzare il -pper mappare porta host con il porto container, come definito al precedente EXPOSEdi Dockerfile.
per esempio

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

Nel caso in cui desideri esporre un intervallo di porte continue, puoi eseguire la finestra mobile in questo modo:

docker run -it -p 7100-7120:7100-7120/tcp 

17
EXPOSE è solo documentazione per le porte pubblicate e utile solo per il collegamento. Un elenco completo di porte può essere trovato usando -P e saranno automaticamente mappate su una porta disponibile sull'host.
Arun Gupta,

4
Non è necessario esporre. Rimuovere il primo passaggio o renderlo facoltativo.
AmirHossein

27

se si utilizza il docker-compose.ymlfile:

services:
    varnish:
        ports:
            - 80
            - 6081

È inoltre possibile specificare la porta host / di rete

varnish:
    ports:
        - 80:80
        - 6081:6081

0

Se stai creando un contenitore da un'immagine e vuoi esporre più porte (non pubblicare) puoi usare il seguente comando:

finestra mobile create --name container name--expose 7000 --expose 7001image name

Ora, quando avvierai questo container usando il docker startcomando, le porte configurate sopra saranno esposte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.