在 Docker 端口映射中:
0.0.0.0:8080->80/tcp
80(箭头右边)是容器内部端口(内部)8080(箭头左边)是宿主机对外暴露的端口(对外)
# 🔍 详细解释:
| 部分 | 含义 | 说明 |
|---|---|---|
80/tcp | 容器内部端口 | 容器内的服务(如 Nginx)监听在 80 端口 |
0.0.0.0:8080 | 宿主机对外端口 | 宿主机上所有网络接口( 0.0.0.0 )的 8080 端口 对外开放 |
-> | 流量方向 | 外部访问宿主机 8080 端口 → 自动转发到容器的 80 端口 |
# 🌐 访问流程示例:
你在浏览器访问:
http://<服务器IP>:8080请求到达 宿主机的 8080 端口
Docker 自动将流量 转发到容器的 80 端口
容器内的 Nginx(监听 80)处理请求并返回结果
✅ 所以:
- 对外端口(别人访问你用的):8080
- 内部端口(容器自己用的):80
# 💡 类比理解:
就像公司前台(宿主机)和员工工位(容器):
- 客户拨打 前台电话 8080
- 前台自动转接到 员工分机 80
- 客户不知道员工分机号,只知道前台号码
# 🛠 启动命令回顾:
docker run -d -p 8080:80 nginx | |
# ↑ ↑ | |
# | └── 容器内部端口(Nginx 默认监听 80) | |
# └────── 宿主机对外端口 |
-p 宿主机端口:容器端口
# ✅ 总结:
| 位置 | 端口号 | 角色 |
|---|---|---|
-> 左边 | 8080 | 对外端口(别人访问你用这个) |
-> 右边 | 80 | 内部端口(容器内服务监听这个) |
记住口诀:
“左外右内,访问左边,服务在右边”