4
votes

Docker EXPOSE fait-il référence au port du conteneur ou au port hôte?

La commande Dockerfile EXPOSE et l'argument docker run --expose indiquent à docker que le port doit être exposé.

Lors de la publication de ports avec -p , vous pouvez mapper un port d'hôte externe à un port de conteneur interne différent, par exemple docker run -p 8080: 80 , où 8080 est le port hôte et 80 est le conteneur port .

Ma question est la suivante: EXPOSE fait-il référence au port du conteneur interne ou au port hôte externe?


0 commentaires

4 Réponses :


2
votes

L'instruction EXPOSE dans un Dockerfile fait référence au port du conteneur.


0 commentaires

1
votes

Selon la documentation , la EXPOSE instruction informe Docker que le conteneur écoute sur les ports réseau spécifiés à l ' exécution . Cela fait donc référence au conteneur interne.

EXPOSE permet la communication entre le conteneur et les autres conteneurs du même réseau . Mais il ne permet pas la communication avec la machine hôte, ou les conteneurs dans un autre réseau! Pour permettre cela, vous devez publier le port, avec l'option -p .


0 commentaires

1
votes

EXPOSE signifie simplement que les ports exposés de ce conteneur actuel sont disponibles / exposés à tous les conteneurs qui se trouvent dans le même réseau.


0 commentaires

1
votes

L'instruction EXPOSE documente le port sur lequel une application à l'intérieur du conteneur est censée écouter. Le mot important est «documents». Cela ne change pas le comportement du docker exécutant votre conteneur, il ne publie pas le port et n'affecte pas la possibilité de se connecter entre les conteneurs.

Que vous exposiez ou non le port, vous devez publier séparément le port pour y accéder depuis l'extérieur du réseau de conteneurs. Et que vous exposiez ou non le port, vous pouvez vous connecter entre des conteneurs sur le même réseau docker.

Il existe différents outils qui peuvent utiliser ces métadonnées d'image pour découvrir automatiquement votre application. Cela inclut l'indicateur -P pour publier tous les ports de conteneur sur des ports hôtes aléatoires à numéro élevé. Vous verrez également des proxys inverses (comme traefik) l'utiliser lors de l'interrogation du moteur docker pour déterminer le port par défaut à utiliser pour votre conteneur.


0 commentaires