docker port命令专用于查看容器端口映射,执行docker port <容器名或ID>可查所有映射,如8888/tcp -> 0.0.0.0:8888;加端口号如docker port jupyter-env 8888可精准查询单端口映射,无输出说明未配置-p或-P。
直接用 docker port 命令就能查,它专为查看容器端口映射而生,不依赖其他工具,也不需要进容器内部。
怎么查某个容器的所有映射端口
确保容器正在运行(docker ps 能看到),然后执行:
-
docker port <容器名或ID> —— 例如
docker port jupyter-env - 输出类似
8888/tcp -> 0.0.0.0:8888,表示容器内 8888 端口已映射到宿主机所有网卡的 8888 端口 - 若无任何输出,说明该容器启动时未配置
-p或-P,端口没暴露出去
怎么查容器里某一个端口映射到哪了
当容器开了多个服务(比如同时跑 Jupyter 和 TensorBoard),可以精准定位:
- docker port <容器名> 8888 —— 查容器内 8888 端口映射到宿主机哪个地址和端口
- docker port <容器名> 6006/tcp —— 明确指定协议,避免 UDP/TCP 混淆
- 输出如
0.0.0.0:6006,说明宿主机任意 IP 的 6006 都可访问该服务
为什么 docker port 没反应或报错
常见原因就这几个,按顺序快速排查:
- 容器没在运行:用 docker ps -a 看状态,是
Exited就得先docker start - 名字输错了:容器名区分大小写,ID 可用前 3 位缩写,但必须唯一
- 端口根本没映射:启动时漏了
-p,或只用了--expose(仅声明不映射) - 用了
-P(大写)但没查对:它会随机分配高位端口,必须靠docker port才知道具体映射到了几号端口
配合 docker ps 快速确认映射是否生效
docker ps 默认会在最后一列显示端口映射简写,比如 0.0.0.0:8080->80/tcp,但它有局限:
- 只显示部分信息,长映射或多端口时容易截断
- 不显示协议细节(如 udp)、不支持查单个端口
- 真正要验证“80 端口到底绑在宿主机哪个 IP 和端口”,还是得靠 docker port


















