docker port 是什么
docker port 查询容器端口在宿主上的映射结果:没有发布端口的容器输出为空,指定容器内端口可以只看一条映射。读取的是容器创建时确定的映射关系,运行中无法追加,因此它也是判断“要不要重建容器”的依据。
基本信息
| 用途 | 查询端口映射关系 |
|---|---|
| 语法 | docker port CONTAINER [容器内端口[/协议]] |
| 对应关系 | -p 宿主端口:容器端口 的后半段 |
| 输出为空 | 说明创建时没有发布端口 |
| 批量查看 | docker ps --format '{{.Ports}}' |
典型使用场景
- 部署后确认映射是否符合预期,宿主端口有没有写错
- 排查访问不通:先确认有没有映射,再看宿主监听与应用绑定地址
- 用随机映射(-P)启动后查出实际分配到的端口
- 核对多个服务之间的端口是否冲突
- 出问题时提供准确的访问地址给同事或测试人员
- 评估是否要重建容器来补映射(运行中无法追加)
示例
示例
docker port web # 列出全部映射
docker port web 80/tcp # 只看 80 端口的映射
docker ps --format '{{.Names}} {{.Ports}}' # 批量查看映射
docker inspect -f '{{json .NetworkSettings.Ports}}' web # 查看原始映射结构映射问题的排查顺序
| 步骤 | 命令 | 判断依据 |
|---|---|---|
| 有没有映射 | docker port 容器 | 输出为空说明创建时没发布端口 |
| 宿主是否监听 | 在宿主执行 ss -ltnp | 无监听说明映射未生效 |
| 绑定地址 | 查看映射输出里的地址 | 0.0.0.0 与 127.0.0.1 范围不同 |
| 容器内应用监听 | 容器内查看监听状态 | 只监听回环时外部访问不到 |
| 防火墙与安全组 | 按宿主端口核对规则 | 未放行时连接被拒 |
输出为空通常表示创建时没有发布端口,补映射必须重新创建容器,运行中的容器无法追加。
映射输出里的绑定地址很关键:0.0.0.0 对所有网卡开放,127.0.0.1 只有本机可访问,外部访问不通时先看这一项。
容器内应用只监听回环地址时,即使做了端口映射外部也访问不到,把监听地址改成所有网卡后才生效。