讲师中心 微信公众号
AI工具推荐 视频效率加速

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

落晨大大_7756

落晨大大_7756

发布时间:2026-10-13 15:14:39

|

426人浏览过

|

来源于php中文网

原创

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

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

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

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

执行方式很简单:

docker port <container-name-or-id>

例如:

docker port frankenphp-app

输出类似:

立即学习“PHP免费学习笔记(深入)”;

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>

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

相关文章

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

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

下载

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

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

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

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

725

2023.07.24

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

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

5519

2024.04.08

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

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

6537

2024.04.08

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

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

2513

2024.04.08

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

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

279

2026.02.11

Docker 容器部署
Docker 容器部署

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

451

2026.03.31

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

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

420

2026.05.11

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

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

305

2026.05.15

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

20

2026.10.16

热门下载

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

精品课程

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

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

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

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn