在 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 端口

# 🌐 访问流程示例:

  1. 你在浏览器访问:
    http://<服务器IP>:8080

  2. 请求到达 宿主机的 8080 端口

  3. Docker 自动将流量 转发到容器的 80 端口

  4. 容器内的 Nginx(监听 80)处理请求并返回结果

✅ 所以:

  • 对外端口(别人访问你用的)8080
  • 内部端口(容器自己用的)80

# 💡 类比理解:

就像公司前台(宿主机)和员工工位(容器):

  • 客户拨打 前台电话 8080
  • 前台自动转接到 员工分机 80
  • 客户不知道员工分机号,只知道前台号码

# 🛠 启动命令回顾:

docker run -d -p 8080:80 nginx
#                ↑   ↑
#                |   └── 容器内部端口(Nginx 默认监听 80)
#                └────── 宿主机对外端口

-p 宿主机端口:容器端口


# ✅ 总结:

位置端口号角色
-> 左边8080对外端口(别人访问你用这个)
-> 右边80内部端口(容器内服务监听这个)

记住口诀:

“左外右内,访问左边,服务在右边”

更新于 阅读次数