解决docker服务端口占用问题,bind:Address already in use

在调试RPC和API服务时遇到Address already in use错误。通过kill掉占用端口的进程,使用netstat和docker命令定位并终止Docker容器内残留的服务进程,成功释放端口并避免启动报错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

在调试rpc和api服务的代码时,启动服务就出现bind:Address already in use的问题,意思是端口被占用了,在尝试了许多方法后终于解决,现总结如下。

解决方案

kill掉占用端口的进程

执行以下代码查看端口占用情况

netstat -ntlp

在这里插入图片描述
定位到端口的pid值,例如我需要的端口号是9001,则对应pid为3197
然后,执行代码kill掉该进程

kill -9 3197

然后重启服务即可。
一般来说,到这里端口占用的问题就可以解决了,然而我在启动rpc服务时仍然报错。。

问题定位

经过排查,我在docker容器中执行了api和rpc的服务代码,但由于连接超时导致服务未关闭,才造成了端口的占用。执行代码可以查看docker容器的识别号:

docker ps

在这里插入图片描述
然后执行以下代码查看该容器内的进程,比如这个容器的识别号是f5f7ab7cbdd6

docker top f5f7ab7cbdd6

在这里插入图片描述
可以看到,之前启动的rpc和api服务仍在运行,因此需要把它们kill掉
注意:需要把相关的进程都kill掉,比如上图需要kill掉的进程是30904,31090,31009和31197,最后呈现下面的画面
在这里插入图片描述
这样,再重新启动rpc和api服务就不会报错了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值