根据进程ID查询Docker容器运行端口
根据进程ID查询Docker容器运行端口的方法如下(分步骤说明):
方法一:通过容器ID直接查询(最精确)
- 根据进程ID查找容器ID
ps -e -o pid,comm,cgroup | grep <进程PID>
# 示例(假设进程ID为3188):
ps -e -o pid,comm,cgroup | grep 3188
在输出结果中,cgroup
字段包含类似/docker/0c42a678c230c7fa5ab5f627d411f248
的容器完整ID(取/docker/
后面的部分)
2. 通过容器ID查询端口
docker port <容器ID>
# 示例:
docker port 0c42a678c230
这会显示容器所有映射到主机的端口(如8080/tcp -> 0.0.0.0:8080
)
方法二:通过容器元数据查询(可能查询不到)
- 根据进程ID定位容器
docker ps -q | xargs docker inspect --format '{{.Id}} {{.State.Pid}} {{.NetworkSettings.Ports}}' | grep <进程PID>
这会直接输出容器ID及其端口映射信息
方法三:通过系统工具追溯(最方便,但是显示的端口是容器内的,不是宿主机端口)
- 查看进程网络连接
nsenter -t <进程PID> -n netstat -tuln
此命令进入容器的网络命名空间,查看容器内部的监听端口
补充说明
- 若容器未显式映射端口:需通过
docker inspect <容器ID>
查看NetworkSettings.Ports
字段确认实际使用的端口。 - 快速验证:若已知容器名称,可直接
docker port <容器名>
查询。
总结推荐使用流程:
# 步骤1:通过进程ID获取容器ID
ps -e -o pid,comm,cgroup | grep 你的进程ID
# 步骤2:通过容器ID查询端口
docker port 上一步得到的容器ID