docker port 是什么
docker port 显示容器端口到宿主端口的映射关系:用来确认发布参数是否生效、映射到哪个宿主地址与端口。它是服务访问不通这类问题的第一现场命令,先看映射再去查别的。
基本信息
| 语法 | docker port 容器,可附加容器内端口 |
|---|---|
| 输出 | 容器端口映射到宿主地址与端口 |
| 空输出 | 没有任何映射(用了无映射的网络模式或没写发布参数) |
| 对照 | inspect 的端口字段信息更完整 |
| 前提 | 有映射不等于应用在监听,两步都要确认 |
| 排查链 | 映射、宿主防火墙、应用监听地址 |
输出与含义
| 输出 | 含义 | 下一步 |
|---|---|---|
| 0.0.0.0:8080 | 绑定全部网卡 | 可外部访问,注意暴露面 |
| 127.0.0.1:8080 | 只绑定回环地址 | 仅本机可访问 |
| 空输出 | 没有发布端口 | 检查运行参数与网络模式 |
| 有映射但访问不通 | 应用监听或防火墙问题 | 查容器内监听与安全组 |
使用示例
使用示例
docker port myapp # 查看全部映射
docker port myapp 80 # 只看指定容器端口
docker inspect myapp -f '{{json .NetworkSettings.Ports}}' # 更完整的映射信息典型使用场景
- 服务访问不通时确认映射是否真的生效
- 排查端口是否只绑定到了回环地址
- 对比期望端口与实际映射,检查发布参数
- 迁移到编排平台前梳理端口映射关系
访问不通的检查顺序:先确认映射存在,再查宿主防火墙与安全组,最后确认应用在容器内监听的是全部网卡而不是回环地址。
映射输出里的绑定地址很关键:绑到回环地址时外部无法访问,绑到全部网卡时则要注意服务的暴露面。
有映射不等于应用可用:容器端口映射正确但应用没监听或只监听回环地址,外部依旧连不上。
用编排工具部署时端口映射写在编排文件里,排查前先确认实际生效的是哪一份配置,而不是只看命令行历史或旧脚本。