Docker 查询容器端口
Docker 容器端口查询是运维和开发中常见的操作,用于验证容器网络配置或调试服务连接。本文将详细介绍如何使用 Docker 命令查询容器端口,包括操作步骤、命令示例及注意事项。
操作步骤
- 确认容器正在运行
- 使用
docker inspect
命令获取容器详细信息 - 解析 JSON 输出中的
NetworkSettings.Ports
字段
命令示例及解释
以下命令展示如何查询特定容器名称或 ID 的端口映射:
docker inspect -f '{{.NetworkSettings.Ports}}' container_name_or_id
解释:
docker inspect
:查询容器信息命令-f
:格式化输出,{{.NetworkSettings.Ports}}
指定输出端口映射container_name_or_id
:替换为实际容器名称或 ID
示例输出(JSON 格式):
{ "80/tcp": [ {"HostPort": "8080", "HostIP": "0.0.0.0", "Protocol": "tcp"} ],
"443/tcp": [ {"HostPort": "8443", "HostIP": "0.0.0.0", "Protocol": "tcp"} ] }
解释输出字段:
- HostPort:宿主机端口
- HostIP:宿主机 IP 地址(默认为 0.0.0.0 表示所有接口)
- Protocol:协议类型(tcp/udp)
实用技巧
- 查询所有容器端口:
docker ps -a --format '{{.Names}}: {{.NetworkSettings.Ports}}'
- 仅显示特定端口:
docker inspect -f '{{range $p, $conf := .NetworkSettings.Ports}}{{if eq $p "80/tcp"}}{{printf "%s: %s\n" $p $conf.HostPort}}{{end}}{{end}}' container_name_or_id
- 使用
docker port
命令(简化版):docker port container_name_or_id 80
直接显示宿主机端口
注意事项
- 确保容器处于运行状态,否则端口信息可能不存在
- 端口映射配置在 Dockerfile 中使用
EXPOSE
或在运行时使用-p
参数指定 - 当
HostIP
为空时,默认使用宿主机所有网络接口