阿里巴巴国际站跨境电商平台,为什么有点网站打不开,北京校园文化设计公司,wordpress 类似建站个人主页#xff1a;金鳞踏雨 个人简介#xff1a;大家好#xff0c;我是金鳞#xff0c;一个初出茅庐的Java小白 目前状况#xff1a;22届普通本科毕业生#xff0c;几经波折了#xff0c;现在任职于一家国内大型知名日化公司#xff0c;从事Java开发工作 我的博客金鳞踏雨 个人简介大家好我是金鳞一个初出茅庐的Java小白 目前状况22届普通本科毕业生几经波折了现在任职于一家国内大型知名日化公司从事Java开发工作 我的博客这里是CSDN是我学习技术总结知识的地方。希望和各位大佬交流共同进步 ~ 问题描述
这一段时间学习了黑马的一个的SpringCloud项目——学成在线。我将项目中需要的组件都放在了我的一台虚拟机上用docker的方式。
但是发现每次启动的时候MySQL容器经常失败报错如下 Error response from daemon: driver failed programming external connectivity on endpoint mysql (868f20f1e4165e72ae2275dec7bee377572098cfcff3177b413d9f32a4b4928e): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use Error: failed to start containers: 0c4e5bdc6f7e 大概是端口占用......
解决办法
实际上解决这个问题也很容易
一、暴力
找到占用3306端口的进程然后kill即可
我们先使用命令找到所有进程的端口
netstat -tanlp 然后直接使用 kill 命令
# 1837 -- 进程号
kill 1837
再重新启动mysql即可
# 0c4e5bdc6f7e -- 通过docker ps -a 查看到的容器的ID
docker start 0c4e5bdc6f7e 但是这样子做对于我来说还是有点治标不治本 因为如果这样子处理的话相当于每次启动vm的时候都要重复一遍上述的工作。
因为我的docker没有自启动而这个 mariadb我也不知道是怎么来的~~~可能是之前的机子有禅道禅道用的数据库就是mariadb在启动VM的时候就启动了3306端口先被占用了。
二、卸载mariadb
由于我的端口占用是禅道引起的所以我直接卸载禅道即可
# 停止服务
/opt/zbox/zbox stopcd /optrm -rf /zbox
停止服务删除zbox目录即可卸载。
三、重新指定这个MySQL的端口
可以把之前的mysql容器删除了再重新创建一个新的如下
docker run --name mysql \--restartalways \-e MYSQL_ROOT_PASSWORD888888 \-v /home/lcxz8686/DockerContainerProperties/mysql/data:/var/lib/mysql \-v /home/lcxz8686/DockerContainerProperties/mysql/conf:/etc/mysql/conf.d \-p 3309:3306 \-d \mysql:8.0.30
如果不想删除可以这样子做
先进入容器内部
docker exec -it mysql /bin/bash
将容器里面的 /etc/mysql/my.cnf 文件复制出来修改原因是docker容器内部大多数不支持vim命令下载安装比较麻烦如果里面没有my.cnf就在 CentOS 上面创建一个编写好再怼回去。
# 容器复制命令 -- 需要退出容器
docker cp mysql:/etc/mysql/my.cnf /etc/mysql
修改完了再cp回去
docker cp my.cnf mysql:/etc/mysql/
再重启该容器即可 文章到这里就结束了如果有什么疑问的地方可以在评论区指出~ 希望能和大佬们一起努力诸君顶峰相见 再次感谢各位小伙伴儿们的支持