Si han trabajado con Docker es de esperarse que se hayan encontrado con el comando EXPOSE dentro de un Dockerfile, ¿no es así? De igual manera, cuando construyes un Dockerfile lo sueles utilizar para «exponer» un puerto del contenedor… ¿ o no?
Hoy me acabo de enterar que ese comando realmente NO expone los puertos del contenedor. Si no que más bien existe solo por un motivo de documentación entre la persona que construye la imagen y la persona que ejecuta el contenedor: de esta manera, éste último sabe que puertos están disponibles dentro de la imagen para ser utilizados.
Cito la documentación:
The
Dockerfile reference – https://docs.docker.com/engine/reference/builder/#exposeEXPOSE
instruction does not actually publish the port. It functions as a type of documentation between the person who builds the image and the person who runs the container, about which ports are intended to be published. To actually publish the port when running the container, use the-p
flag ondocker run
to publish and map one or more ports, or the-P
flag to publish all exposed ports and map them to high-order ports
Interesante.