Dockerfile中端口的声明:
EXPOSE <端口1> [<端口2>...]
所以,EXPOSE的作用:只是说明docker容器开放了哪些端口,并没有将这些端口实际开放了出来!更多的作用是告诉运维人员或容器操作人员我开放了容器的哪些端口,只是一种说明。第二种作用:Dockerfile中声明了EXPOSE端口之后,我们使用-P命令进行随机映射的时候,会映射到EXPOSE声明的端口。比如说我们现在对一个tomcat容器进行EXPOSE 8080声明,那么我们进行-P随机映射的时候是会映射到8080端口。
EXPOSE声明后,启动在这个容器里的服务不能被docker外部世界(host和其他主机)访问,但是可以通过container link,被其他link的container访问到,参考:docker EXPOSE vs publish