docker port命令仅用于查看已运行容器的端口映射关系,不能配置或修改映射;它读取Docker守护进程元数据,输出如“0.0.0.0:8080->80/tcp”表示宿主机8080端口映射至容器80端口,若容器未用-p启动则无输出。

docker port 命令本身不配置映射,只查已运行容器的绑定关系
很多人误以为 docker port 能设置或修改端口,其实它纯属“只读工具”:只能查看容器启动时用 -p 或 ports 声明过的映射是否生效。如果容器没带 -p 启动,docker port 就返回空,不是 bug,是没映射。
运行 FrankenPHP 容器后,用 docker port 查具体映射
假设你用这条命令启动了 FrankenPHP:
docker run -d --name frankenphp -p 8080:8080 dunglas/frankenphp
接着执行:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
-
docker port frankenphp→ 输出类似8080/tcp -> 0.0.0.0:8080,说明映射存在 -
docker port frankenphp 8080→ 输出0.0.0.0:8080,确认宿主机端口是 8080 - 如果输出为空,说明容器根本没映射该端口,或容器已退出(
docker ps确认状态)
常见映射错误导致 docker port 查不到或查错
FrankenPHP 默认监听容器内 :8080,但以下情况会让 docker port 显示异常或访问失败:
立即学习“PHP免费学习笔记(深入)”;
- 写成
-p 8080:80:容器里没开 80 端口,docker port frankenphp 80可能无输出,curl http://localhost:8080必然 connection refused - 漏掉
-p直接docker run dunglas/frankenphp:容器虽在跑,但docker port查不到任何映射,外部无法访问 - FrankenPHP 进程没监听
0.0.0.0:8080:某些自定义镜像或启动脚本可能绑死127.0.0.1:8080,这时即使docker port显示映射成功,curl仍连不上
docker port 查到映射后还连不上?顺手检查这三件事
docker port 只管 Docker 层映射,不保证服务可达。查完映射,立刻验证链路:
- 进容器看监听地址:
docker exec frankenphp ss -tln | grep :8080,必须含0.0.0.0:8080,不能只有127.0.0.1:8080 - 宿主机防火墙是否放行该端口(尤其 CentOS 的
firewalld或 Ubuntu 的ufw) - 阿里云/腾讯云等平台安全组是否开放对应端口(比如生产环境要用
80或443,就得在控制台手动加规则)


















