容器启动端口被占用分析

问题

1.1.报错信息来自 Docker,当容器启动或 docker attach 时,发现容器配置的 7625 端口已被宿主机其他进程或其他容器占用

1
Bind for 0.0.0.0:7625 failed: port is already allocated

排查与解决

2.1.检查是否被其他容器占用

1
docker ps -a --filter "publish=7625"

如有占用容器,可选择停止或修改端口:

1
docker stop <container_id>

2.2.排查宿主机是否有进程占用

1
2
3
lsof -i:7625
# 或
netstat -tulnp | grep 7625

确认进程后,如需释放端口:

1
kill -9 <pid>

2.3.修改 Docker 映射端口
若无法释放端口,可更新 docker-compose.ymldocker run 参数,例如改成 8630:7625

1
2
ports:
- "8630:7625"

2.4.防火墙或进程残留导致“虚占用”
某些场景端口未完全释放,可重启 docker 服务:

1
systemctl restart docker

3.端口冲突排查流程图

flowchart TD
A[启动容器报错:端口已占用] --> B{被容器占用?}
B -->|是| C[stop/改端口]
B -->|否| D{被宿主进程占用?}
D -->|是| E[kill进程 or 修改端口]
D -->|否| F{可能为残留占用?}
F -->|是| G[systemctl restart docker]
F -->|否| H[检查防火墙代理]