栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker出现Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use的解决方法

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker出现Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use的解决方法

目录
  • 1. 问题所示
  • 2. 分析原理
  • 3. 解决方法

1. 问题所示

出现如下问题

(base) gaokaoli@kkjz-ThinkStation-P330:~$ sudo docker start 4438
Error response from daemon: driver failed programming external connectivity on endpoint mysql (d8e2492b2eaef4bfe5e4a64bad7c8cb27d8fb4cc03afb1fd4b85183769e498ae): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use
Error: failed to start containers: 4438

代码截图如下:

2. 分析原理

关于前半部分的原因,主要原因可看我这部分的文章:
docker出现Error response from daemon: driver failed programming external connectivity on endpoint解决方法

对于下半部分的原因:Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use
分析其原理主要为3306端口被占用了,所以要kill 3306端口的pid进程号即可或者关闭mysql服务即可

3. 解决方法

需要按照顺序进行执行:

  • 执行systemctl restart docker,关于为何执行这个,可看我上面完整的分析
  • 重启以下docker容器systemctl restart docker
  • 查看端口号的占用pid进程号 ps -ef|grep 3306

执行步骤:

(base) gaokaoli@kkjz-ThinkStation-P330:~$ ps -ef|grep 3306
gaokaoli  957833  859945  0 21:17 pts/0    00:00:00 grep --color=auto 3306

代码截图:

再次执行上面这个命令,发现其pid进程号会改变,所以不能使用kill -9 pid进程号,如果发现进程号不会改变,则可以执行kill命令

  • 如果pid进程号改变,则执行如下命令service mysql stop
(base) gaokaoli@kkjz-ThinkStation-P330:~$ service mysql stop
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
停止“mysql.service”需要认证。
Authenticating as: kkjz,,, (kkjz)
Password: 
==== AUTHENTICATION COMPLETE ===

这条命令只是关闭mysql,但是3306的端口号并没有被关闭
如图所示:(而且其进程号一直改变,无法kill)

  • 接下来就可启动docker容器了,如果已经有容器,则直接start,如果没有则需run下
(base) gaokaoli@kkjz-ThinkStation-P330:~$ sudo docker ps -a
CONTAINER ID   IMAGE       COMMAND                  CREATED        STATUS                        PORTS     NAMES
4438b7f37917   mysql:5.7   "docker-entrypoint.s…"   2 hours ago    Exited (128) 22 minutes ago             mysql
de4e3ddc6f6c   rabbitmq    "docker-entrypoint.s…"   3 months ago   Exited (0) 6 weeks ago                  rabbit

(base) gaokaoli@kkjz-ThinkStation-P330:~$ sudo docker start 4438
4438
(base) gaokaoli@kkjz-ThinkStation-P330:~$ sudo docker ps 
CONTAINER ID   IMAGE       COMMAND                  CREATED       STATUS         PORTS                                                  NAMES
4438b7f37917   mysql:5.7   "docker-entrypoint.s…"   2 hours ago   Up 8 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
(base) gaokaoli@kkjz-ThinkStation-P330:~$ ps -ef|grep 3306
root      958022  957542  0 21:18 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 3306 -container-ip 172.17.0.2 -container-port 3306
root      958028  957542  0 21:18 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 3306 -container-ip 172.17.0.2 -container-port 3306
gaokaoli  958187  859945  0 21:19 pts/0    00:00:00 grep --color=auto 3306

截图如下:

执行到这里问题已经解决了
如果还是不行的话,底下评论区留言即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884607.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号