Comment puis-je exposer plus d'un port avec Docker?


Réponses:


716

Pour exposer un seul port, voici ce que vous devez faire:

docker run -p <host_port>:<container_port>

Pour exposer plusieurs ports, fournissez simplement plusieurs -parguments:

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

4
Merci! Trouvé cela dans les documents ici: docs.docker.com/userguide/dockerlinks/… où il est ditNote: The -p flag can be used multiple times to configure multiple ports.
— Ted M. Young

Existe-t-il un moyen de spécifier les ports dans un fichier de configuration? Par exemple, en utilisant l'option --env-file?
— Giovanni Bitliner

8
@GiovanniBitliner Je suis encore assez nouveau, mais je suis sûr que vous définiriez des ports dans un Dockerfile avec EXPOSE , puis effectueriez docker run -P(notez les majuscules) qui expose automatiquement tous les ports définis avec EXPOSE dans le Dockerfile
— Ted Avery

Plusieurs ports peuvent arrêter le processus d'initialisation sous un fichier de service systemd?
— Lanti

1
Je pense que le terme correct ici n'est publishpas expose.
— tgogos

290

Étape 1

Dans votre Dockerfile, vous pouvez utiliser le verbe EXPOSEpour exposer plusieurs ports.
par exemple

EXPOSE 3000 80 443 22

Étape 2

Vous souhaitez ensuite créer une nouvelle image basée sur ce qui précède Dockerfile.
par exemple

docker build -t foo:tag .

Étape 3

Ensuite, vous pouvez utiliser -ppour mapper le port hôte avec le port conteneur, comme défini ci EXPOSE- dessus de Dockerfile.
par exemple

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

Si vous souhaitez exposer une gamme de ports continus, vous pouvez exécuter docker comme ceci:

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

17
EXPOSE est uniquement une documentation pour les ports qui sont publiés et utile pour la liaison uniquement. Une liste complète des ports peut être trouvée en utilisant -P et ils seront automatiquement mappés sur un port disponible sur l'hôte.
— Arun Gupta

4
Exposer n'est pas nécessaire. Supprimez la première étape ou rendez-la facultative.
— AmirHossein

27

si vous utilisez un docker-compose.ymlfichier:

services:
    varnish:
        ports:
            - 80
            - 6081

Vous pouvez également spécifier le port hôte / réseau

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

0

Si vous créez un conteneur à partir d'une image et souhaitez exposer plusieurs ports (pas publier), vous pouvez utiliser la commande suivante:

docker create --name container name--expose 7000 --expose 7001image name

Maintenant, lorsque vous démarrez ce conteneur à l'aide de la docker startcommande, les ports configurés ci-dessus seront exposés.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.