设置端口的方式

EXPOSE: Dockerfile的指令

指定容器暴露的端口

docker run -p, —publish

把容器的一个端口映射到本地主机的端口

  1. docker run -p 3000:3000 -p 9229:9229 # 当然你可以映射不一样的端口
  2. # 这种方式即使没有 EXPOSE 5858, 依然可以将容器的5858端口映射到本地主机的5858端口
  3. docker run -p 5858

docker run -P, —publish-all

将容器所有EXPOSE的端口映射到本地主机随机的端口

设置端口的3种方式的区别

如果没有设置 EXPOSE 或者 -p, 该容器的服务只能被自己访问。
如果只设置 EXPOSE, 该容器的服务不能从容器外部访问,但是其他容器可以访问,这适合容器间通信。
如果即设置了 EXPOSE 又设置了 -p, 该容器的服务从任何地方都可以访问,包括从容器外边。

参考

What is the difference between “expose” and “publish” in Docker?