我们用 1Panel 安装 Tomcat 这个具体例子,把端口映射关系说得更明白:
想象一下:
1. Tomcat 住进了“集装箱”(容器): 你用 1Panel 的“应用商店”安装了 Tomcat。1Panel 会自动创建一个 Docker 容器,把 Tomcat 软件和它的运行环境打包放进去。这个集装箱有自己独立的小世界。
2. Tomcat 的“家门牌号”(容器端口): 在这个集装箱内部,Tomcat 有个习惯:它只在自己的 8080
号房门口(默认监听端口 8080)接待客人(处理 HTTP 请求)。这是 容器端口 (Container Port),固定是 8080
(除非你特意改了 Tomcat 的配置)。
3. 服务器大楼的“前台号”(服务器端口): 现在,你想从大楼外面(比如用你的电脑浏览器)访问集装箱里的 Tomcat。但是整栋服务器大楼(宿主机)有很多服务,需要一个大楼统一的前台号码来引导。你决定用大楼的 9080
号窗口作为接待 Tomcat 访客的前台。这是 服务器端口 (Host Port),你可以自由选,比如 9080
(只要这个窗口没人用)。
1Panel 里的关键操作 - 牵线搭桥(端口映射):
在 1Panel 安装 Tomcat 时(通常在应用商店点击安装后进入配置页面),你会看到一个 “端口设置” 或 “端口映射” 的地方:
* 找到两个输入框:
第一个框(可能叫 主机端口服务器端口
或 Host Port
):你填 9080
** (你选的大楼前台号)。
第二个框(可能叫 容器端口
或 Container Port
):你填 8080
** (Tomcat 在集装箱里的家门牌号)。
* 协议: 一般选 TCP
。
* 效果图示意 (1Panel 界面简化):
```
+---------------------+---------------------+----------+
| 服务器端口 (Host Port) | 容器端口 (Container Port) | 协议 |
+---------------------+---------------------+----------+
| [ 9080 ] | [ 8080 ] | [TCP ▼] |
+---------------------+---------------------+----------+
```
点击“确认”或“部署”后,魔法发生了:
1. 你在浏览器输入访问地址: http://<你的服务器IP地址>:9080
2. 请求到达服务器大楼: 网络请求敲响了服务器大楼 9080
号窗口(服务器端口 9080)。
3. 1Panel/Docker 的接待员(端口映射规则)起作用: 接待员一看:“哦!9080 窗口的访客是找 Tomcat 集装箱的!” 他立刻拿起内部电话。
4. 内部电话打到集装箱: 接待员拨通了 Tomcat 集装箱内部的 8080
号房(容器端口 8080):“Tomcat先生,有您的访客!”
5. Tomcat 在家处理: Tomcat 正在 8080
房等着呢,它收到请求,生成一个欢迎页面(通常是那只带羽毛的猫或者一个默认页)。
6. 页面送回给你: Tomcat 把页面交给接待员,接待员再通过 9080
窗口原路送回给你的浏览器。
你看到的结果: 浏览器成功显示了 Tomcat 的默认欢迎页面!🎉
总结这个例子里的关键点:
| 概念 | 在 Tomcat 例子中的值 | 说明 |
| :----------- | :------------------ | :------------------------------------------------------------------- |
| 容器端口 | 8080
| Tomcat 在容器内部 监听的端口。固定由 Tomcat 决定 (默认8080)。集装箱内的门牌号。 |
| 服务器端口 | 9080
(你选的) | 在宿主机服务器上 对外开放的端口。你可以自由选择 (如 8081, 8888, 9090),只要不冲突。大楼的前台号。 |
| 访问方式 | http://服务器IP:9080
| 用户必须通过 服务器IP + 你设置的 服务器端口 来访问容器里的 Tomcat。 |
| 映射关系 | 9080 -> 8080
| 1Panel/Docker 把对宿主机 9080
端口的访问,**转发** 到容器内部的 8080
端口。 |
为什么这么设计?好处是什么?
1. 灵活性: 你可以在同一台服务器上运行 多个 Tomcat 容器!给每个 Tomcat 容器分配 不同的服务器端口 (比如 9080, 9081, 9082),但它们内部都用 8080
。互不干扰!
2. 避免冲突: 服务器本身可能已经运行了其他服务在 8080
端口。通过映射,你可以让 Tomcat 容器使用外部不同的端口(如 9080),完美避开冲突。
3. 安全性 (可选): 如果你只想让服务器本机访问 Tomcat(比如做测试),可以在 1Panel 端口映射设置里,把服务器端口写成 127.0.0.1:9080:8080
。这样外部网络就无法通过 9080 访问了,只有服务器自己能用 http://localhost:9080
访问。
4. 简化内部配置: Tomcat 在容器里永远只关心自己的 8080
端口就行,不用管外部世界用什么端口访问它。
**通俗一句话:** 服务器端口(如9080)是你访问“大楼”的门牌号,容器端口(8080)是集装箱里Tomcat家的门牌号。1Panel做的端口映射,就是把敲大楼9080号门的客人,直接带到集装箱里的8080号房! 这样你就能顺利找到 Tomcat 了。