Docker网络
说明
1. 通过EXPOSE或者–expose暴露端口
在dockerfile 中通过EXPOSE暴露端口和在docker run --expose 暴露端口的作用是一样的,都是将端口暴露,但这个暴露的端口不依赖宿主机,默认情况下,我们无法通过这些端口访问宿主机,换句话说,也就是没有与宿主机的网络建立网络映射。
2. 通过-p发布特定端口
ip:hostPort:containerPort| ip::containerPort | hostPort:containerPort | containerPort
-p 指定发布特定端口的方式有四种,其发布的端口有两部分:
- 暴露端口
- 与宿主机网络建立映射
也就是可以通过宿主机的网络访问到docker容器
docker run -p 3000 my_image
如果运行时,只指定containerPort, 则宿主机的端口会随意指定,这种方式的好处是,让宿主机自主分配未占用的端口,防止手动指定端口,绑定端口已经被占用的情况
3. -expose/EXPOSE和-p对比
-expose/EXPOSE只暴露端口,不与宿主机建立网络映射;
-p: 暴露端口并建立网络映射
4. -P和EXPOSE发布端口
因为EXPOSE通常只是作为记录机制,也就是告诉用户哪些端口会提供服务,Doc