Exposer des ports dans les Dockerfiles
Lorsque vous construisez des images Docker, vous pouvez spécifier les ports qui doivent être exposés à l'intérieur du conteneur en utilisant l'instruction EXPOSE
dans le Dockerfile.
Syntaxe pour l'exposition de ports
L'instruction EXPOSE
dans un Dockerfile suit cette syntaxe :
EXPOSE < port > [ < port > / < protocol > ...]
Ici, <port>
représente le numéro de port, et le <protocol>
facultatif spécifie le protocole, qui peut être soit tcp
(par défaut) soit udp
.
Par exemple, pour exposer le port 80 (HTTP) et le port 22 (SSH) dans votre conteneur, vous utiliseriez l'instruction EXPOSE
suivante :
EXPOSE 80 22
Mapper les ports exposés lors de l'exécution
Lorsque vous exécutez un conteneur basé sur l'image, vous pouvez mapper les ports exposés sur les ports de la machine hôte en utilisant le drapeau -p
ou --publish
avec la commande docker run
.
docker run -p <host-port>:<container-port> <image-name>
Par exemple, pour mapper le port 80 du conteneur sur le port 8080 de l'hôte, vous utiliseriez la commande suivante :
docker run -p 8080:80 my-app
Cela permet aux clients externes d'accéder au service s'exécutant sur le port 80 à l'intérieur du conteneur en se connectant au port 8080 sur la machine hôte.
Exposer plusieurs ports
Vous pouvez exposer plusieurs ports dans un Dockerfile en utilisant plusieurs instructions EXPOSE
. Cela est utile lorsque votre conteneur exécute plusieurs services ou applications qui doivent être accessibles depuis l'hôte.
EXPOSE 80
EXPOSE 22
EXPOSE 3306
Lors de l'exécution du conteneur, vous pouvez mapper chacun de ces ports exposés sur les ports de l'hôte en utilisant le drapeau -p
ou --publish
.
docker run -p 8080:80 -p 2222:22 -p 3306:3306 my-app
En suivant cette approche, vous pouvez vous assurer que tous les ports nécessaires sont exposés et accessibles depuis la machine hôte.