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.