1panel 面板容器端口映射怎么设置
学完这篇,你能在 1Panel 里给容器配好端口映射,让外网正常访问容器里的服务,并且在改端口不生效时知道该查哪里。
下面以 1Panel v1.10.x 为例(v2.x 菜单结构基本一致),全程在浏览器里操作 1Panel 面板完成。
第一步:先弄清「主机端口:容器端口」谁是谁
这一步要建立基本概念,不然填反了容器能起来但外网访问不了。
端口映射写法是 主机端口:容器端口。容器端口是容器内部服务自己监听的端口(比如 nginx 镜像默认监听 80),主机端口是服务器对外暴露的端口,由你自己选(比如 8080)。写完就是 8080:80,外网访问 http://服务器IP:8080 就能到容器里的 80。
注意:主机端口在同一台服务器上不能重复。创建前先在 1Panel 的「主机」→「终端」里执行
ss -tlnp | grep 8080,有输出说明端口被占用,换一个。
第二步:在「创建容器」时设置端口映射
这一步做完,容器就带着端口映射跑起来了。
1Panel 左侧菜单点「容器」→「容器」,右上角点「创建容器」。填写表单:
- 「容器名称」:随便起,如
my-nginx - 「镜像」:填
nginx:latest,点右侧「拉取镜像」 - 往下滚到「端口映射」区域,点「+ 添加」
- 第一行「主机端口」填
8080(部分版本显示为「暴露端口」) - 第二行「容器端口」填
80 - 「协议」保持
TCP
其余项按需填,最后点右下角「确认」。容器列表里状态变成「运行中」即成功。
注意:Docker 不支持给已创建的容器直接改端口映射。想换端口只能删掉容器重建,所以创建前先把端口想清楚(特别是 80、443、3306 这类常用端口)。
第三步:给已在运行的容器换端口
这一步解决「容器已经跑起来、但端口配错了」的情况。
由于 Docker 限制,1Panel 里没有「编辑端口」按钮。正确做法是:
- 「容器」→「容器」,找到目标容器,点右侧「更多」→「停止」
- 再点「更多」→「删除」
- 重新按第二步创建,端口填新的
注意:删除前一定确认容器数据是挂在「存储卷」或宿主目录上的。如果数据写在容器内部,删容器等于删数据。可以在「容器」→「存储卷」里先确认挂载情况。
第四步:用「编排」方式设置端口(推荐长期使用)
这一步适合需要一次配多个端口、或者想留一份配置文件的场景。
左侧菜单「容器」→「编排」→「创建编排」,名称填 myapp,在编辑框粘贴:
services:
web:
image: nginx:latest
ports:
- "8080:80"
- "8443:443"
restart: always
点「确认」。1Panel 会自动拉镜像并启动,列表里会出现这条编排,之后改端口只要点「编辑」改 YAML 再重新部署,比删容器省事。
注意:YAML 缩进必须用空格,不能用 Tab,缩进错了点确认会直接报错。
第五步:放行防火墙和安全组
这一步做完,外网才能真正连上。
1Panel 左侧菜单「防火墙」→「端口规则」→「添加端口规则」,端口填 8080,协议选 TCP,来源填 all,点「确认」。
注意:1Panel 的防火墙管的是服务器系统防火墙。如果你的服务器是阿里云、腾讯云等,还必须登录云厂商控制台,在「安全组」里放行同一个 8080 端口。只放行一边、外网不通,是新手最常见的问题。
第六步:验证端口是否真的生效
这一步确认前面所有操作有没有白做。
在「容器」→「容器」列表里,点开容器详情,看「端口」栏是否显示 0.0.0.0:8080->80/tcp。或者到「主机」→「终端」执行:
curl -I http://127.0.0.1:8080
返回 HTTP/1.1 200 OK 说明容器本身没问题;再用浏览器访问 http://服务器公网IP:8080,能打开页面说明端口映射和放行都成功。
小结
- 端口映射格式是
主机端口:容器端口,左边对外、右边对内,别填反。 - 主机端口不能重复,创建前用
ss -tlnp查占用。 - Docker 容器创建后不能直接改端口,只能删除重建;长期项目建议用「编排」写 YAML。
- 删容器前确认数据已挂载到存储卷或宿主目录。
- 外网不通时,按「容器端口映射 → 1Panel 防火墙 → 云服务器安全组」顺序排查。
原文链接:https://www.gj0.com/thread-931.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。