背景
使用如下dockcer命令启动一个springboot服务。(删除无关内容)
docker run -e DUBBO_IP_TO_REGISTRY=121.40.178.113 -e DUBBO_PORT_TO_REGISTRY=20880 -e DUBBO_PORT_TO_BIND=20880 --name app-xxxx -p 8000:8000 -p 9998:9998 -p 20880:20880 -d $image --net=host --spring.profiles.active=test
它使用了–net=host,会导致-p参数失效。目前很多应用都使用了–net=host,需要删除它并使用精准的端口映射。
目标
需要知道某个应用对外开放的具体端口。
解决过程
服务使用openjdk:8u322-jdk-bullseye作为基础镜像。
# 进入容器
root@e6xxx:/data/app# apt-get update
root@e6xxx:/data/app# apt-get install -y net-tools
# 显示服务监听的端口
root@e6xxx:/data/app# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9998 0.0.0.0:* LISTEN 1/java
tcp 0 0 0.0.0.0:22222 0.0.0.0:* LISTEN 1/java
tcp 0 0 0.0.0.0:20880 0.0.0.0:* LISTEN 1/java
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 1/java
udp 0 0 0.0.0.0:40635 0.0.0.0:* 1/java
udp 0 0 0.0.0.0:46705 0.0.0.0:* 1/java
udp 0 0 0.0.0.0:55157 0.0.0.0:* 1/java
udp 0 0 0.0.0.0:39416 0.0.0.0:* 1/java
## 上面的监听列表中有22222,不在docker run命令的-p中,查了一下也没在代码中。
root@e6xxx:/data/app# apt-get install -y iproute2
# 查看端口占用情况
root@e6xxx:/data/app# ss -tulnp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 0.0.0.0:40635 0.0.0.0:* users:(("java",pid=1,fd=25))
udp UNCONN 0 0 0.0.0.0:46705 0.0.0.0:* users:(("java",pid=1,fd=67))
udp UNCONN 0 0 0.0.0.0:55157 0.0.0.0:* users:(("java",pid=1,fd=138))
udp UNCONN 0 0 0.0.0.0:39416 0.0.0.0:* users:(("java",pid=1,fd=65))
tcp LISTEN 0 128 0.0.0.0:9998 0.0.0.0:* users:(("java",pid=1,fd=116))
tcp LISTEN 0 128 0.0.0.0:22222 0.0.0.0:* users:(("java",pid=1,fd=63))
tcp LISTEN 0 128 0.0.0.0:20880 0.0.0.0:* users:(("java",pid=1,fd=137))
tcp LISTEN 0 100 0.0.0.0:8000 0.0.0.0:* users:(("java",pid=1,fd=139))
# 退出docker容器 尝试telnet一下
[root@sh5xZ prometheus]# telnet localhost 22222
Trying ::1...
Connected to localhost.
Escape character is '^]'.
___ __ __ ___ ___ ____
/ _ \ / / / // _ ) / _ ) / __ \
/ // // /_/ // _ |/ _ |/ /_/ /
/____/ \____//____//____/ \____/
dubbo>
#此时quit退出,按ctrl+]Dubbo QOS 端口说明
- 默认 22222
- 主要功能:在运行时查看 Dubbo 服务状态、关闭服务、远程执行命令等
- 安全风险:任何能访问这个端口的人都可以执行 Dubbo QOS 命令
- 生产环境通常关闭 或仅限内网访问
目前不需要开放该端口,直接把–net=host删除即可。
作者:张三 创建时间:2025-12-12 10:51
最后编辑:张三 更新时间:2026-01-14 17:39
最后编辑:张三 更新时间:2026-01-14 17:39