解决 Error starting userland proxy: listen tcp 0.0.0.0:6379: bind: address already in use

今天启动redis突然出现连接端口有问题,错误如下:

truedei@truedei:~$ 
truedei@truedei:~$ sudo docker start redis
Error response from daemon: driver failed programming external connectivity on endpoint redis (87977922525bd67cb6e39c26b2f0229081ff428693991d923c595752a733d41b): Error starting userland proxy: listen tcp 0.0.0.0:6379: bind: address already in use
Error: failed to start containers: redis
truedei@truedei:~$ 

就查了下端口,果然有在使用的:

truedei@truedei:~$ netstat -ntpl |grep 6379
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      -                   
truedei@truedei:~$ 

查一下是谁在占用,让我很是惊讶,居然是他自己,端口被占用了,而且还没启动

truedei@truedei:~$ ps -aux |grep 6379
redis     1397  0.0  0.0  42608  2292 ?        Ssl  07:30   0:00 /usr/bin/redis-server 127.0.0.1:6379
truedei   5096  0.0  0.0  14536   976 pts/4    S+   07:33   0:00 grep 6379
truedei@truedei:~$ 
truedei@truedei:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
truedei@truedei:~$ 
truedei@truedei:~$ 

先结束掉在说,奇怪的是,杀都杀不掉

truedei@truedei:~$ sudo kill -9 1397
truedei@truedei:~$ ps -aux |grep 6379
redis     8263  0.0  0.0  42608  2164 ?        Ssl  07:35   0:00 /usr/bin/redis-server 127.0.0.1:6379
truedei   8291  0.0  0.0  14536   984 pts/4    S+   07:35   0:00 grep 6379
truedei@truedei:~$ 

仔细看了一下这个redis并不是docker中安装的redis,而是在本机的:

/usr/bin/redis-server

那就停止掉本机的,果然可以了:

truedei@truedei:~$ /etc/init.d/redis-server stop
[ ok ] Stopping redis-server (via systemctl): redis-server.service.
truedei@truedei:~$ 
truedei@truedei:~$ ps -aux |grep 6379
truedei  10583  0.0  0.0  14536   948 pts/4    S+   07:37   0:00 grep 6379
truedei@truedei:~$ 
truedei@truedei:~$ 

然后再启动:

truedei@truedei:~$ 
truedei@truedei:~$ sudo docker start redis
redis
truedei@truedei:~$ 
truedei@truedei:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
85cb7d83a2ff        redis               "docker-entrypoint.s…"   22 hours ago        Up 5 seconds        0.0.0.0:6379->6379/tcp   redis
truedei@truedei:~$ 
truedei@truedei:~$ 

总结:

出现这种情况的大多数原因都是自己的本机安装了redis,而docker中安装的redis与物理机绑定的端口号是相同的,所以就造成了这个原因。
解决方案有很多种:
1、直接卸载物理机的redis
2、不让开机启动
3、修改docker映射的端口号
4、…等

如果对你有帮助,可以分享给你身边的朋友。或者给俺点个大大的赞和大大的评论,点赞和评论就是给我最大的支持,感谢。
水平有限,难免会有疏漏或者书写不合理的地方,欢迎交流讨论。
作者:TrueDei
作者唯一博客CSDN:https://truedei.blog.csdn.net/
转载说明:如需转载请注明原地址和作者名。

如果喜欢我的文章,还没看够可以关注我,我会用心写好每一篇文章。

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TrueDei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值