FrankenPHP怎么查看容器实际发布了哪些端口

落晨大大_7756

落晨大大_7756

2026-10-13

426人浏览

原创

docker port是唯一能准确查询容器运行时真实端口映射的命令,输出如80/tcp -> 0.0.0.0:8044表示宿主机8044端口正转发至容器80端口;若无输出则未用-p映射,外部不可访问。

frankenphp怎么查看容器实际发布了哪些端口

docker port 命令查容器真实映射端口

容器启动后,docker port 是唯一能准确告诉你「宿主机哪个端口正转发到容器内哪个端口」的命令。它不依赖配置文件或文档描述,只读取运行时实际绑定关系。

执行方式很简单:

docker port <container-name-or-id></container-name-or-id>

例如:

docker port frankenphp-app

输出类似:

80/tcp -> 0.0.0.0:80<br>443/tcp -> 0.0.0.0:443<br>443/udp -> 0.0.0.0:443

这表示:容器内 80 和 443 端口已通过 -p 映射到宿主机对应端口;443/udp 表明 HTTP/3 支持已启用。

  • 若无任何输出,说明该容器没用 -p 或 --publish 暴露端口,外部无法直连(常见于仅内部通信场景)
  • 若只看到 9001/tcp -> 0.0.0.0:9001,但你没配 FPM 反代,大概率是误暴露了内部 FPM 接口,应删掉
  • 0.0.0.0:80 中的 0.0.0.0 表示监听所有网卡;若显示 127.0.0.1:80,则仅本机可访问,外网请求会被拒绝

为什么 docker ps 的 PORTS 列有时不准

docker ps 输出的 PORTS 列只是摘要,容易漏掉 UDP 端口、host 网络模式下的端口,或被截断显示(尤其多端口时)。它也不区分是否真正生效——比如你写了 -p 8080:80,但 FrankenPHP 实际监听的是 :8080(因 SERVER_NAME=:8080),这时 docker ps 仍会显示 8080->80/tcp,但请求会失败。

关键判断依据永远是两件事是否对齐:

  • 容器内 FrankenPHP 监听的地址(由 SERVER_NAME 或 Caddyfile 决定)
  • docker port 显示的宿主机→容器端口映射关系

不对齐就会出现「能连上但返回 404」「curl 超时」「HTTP_HOST 不匹配」等问题。

容器内自查监听地址用 netstat 或 ss

进入容器内部,确认 FrankenPHP 进程到底在监听什么:

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载
docker exec -it frankenphp-app sh -c "netstat -tlnp | grep :"

或更轻量的:

docker exec -it frankenphp-app ss -tln

你会看到类似:

LISTEN 0 4096 *:80 *:* users:(("frankenphp",pid=1,fd=6))<br>LISTEN 0 4096 *:443 *:* users:(("frankenphp",pid=1,fd=7))

注意:*:80 表示监听所有 IPv4 地址的 80 端口;[::]:443 表示监听 IPv6 的 443;如果只看到 127.0.0.1:8000,说明 FrankenPHP 被限制在本地回环,docker port 即使有映射也无效。

常见陷阱:

  • SERVER_NAME=localhost:8080 → Caddy 忽略端口部分,fallback 到默认行为(可能监听 :443)
  • 用了 --network host 模式,docker port 就不会显示任何端口映射(因为没做 NAT),此时必须看容器内 ss -tln 和宿主机 ss -tln | grep :端口
  • 容器启动后改过 SERVER_NAME 环境变量但没重启,进程仍按旧配置监听

别信 Dockerfile 或 compose.yaml 里的 ports 声明

Kubernetes 的 containerPort 或 Compose 的 ports 列表只是声明性配置,不是运行时事实。它们不保证端口真被监听,也不校验 FrankenPHP 是否响应。

比如这个 Compose 片段:

ports:<br>  - "80:80"<br>  - "443:443"

看起来很完整,但如果环境变量是 SERVER_NAME=:8080,FrankenPHP 实际监听的是 :8080,而宿主机 80 端口转发到容器 80 —— 容器里根本没人听 :80,结果就是连接被拒绝。

所以最终验证必须分两步走:

  • 查容器内监听地址:docker exec ... ss -tln
  • 查宿主机映射关系:docker port <name></name>

二者端口号一致,才代表服务真正可访问。少做一次,就可能卡在「配置写了却不通」的死循环里。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

705

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5279

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

6277

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2393

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

259

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

451

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

400

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

305

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

445

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习