对比
| 维度 | EXPOSE(Dockerfile) | -p / --publish(运行时) |
|---|---|---|
| 作用 | 声明容器监听意图 | 建立宿主到容器的端口映射 |
| 宿主监听 | 不产生 | 产生对应宿主机监听 |
| 容器互访 | 同网络可直接按容器名加端口访问 | 与容器互访无关 |
| 典型误解 | 写了就对外可访问 | 不写就不会被外部访问 |
示例
示例
docker run -d nginx # EXPOSE 80,但宿主未发布
docker run -d -p 8080:80 nginx # 映射后访问 http://<宿主>:8080
docker run -d --network app-net nginx # 同网络容器直接访问 nginx:80微服务间通信走容器网络即可,只有需要被宿主机之外访问的服务才需要 -p。