分析
ubuntu_20服务器上,基于docker创建了的mysql容器,一直能稳定运行。当时当我在linux使用apt直接安装apache2和mysql后,再次启动mysql容器就会失败。
遇到问题,我们先看下容器的报错日志,执行查看日志命令:docker logs -f -t --tail 10 mysql01
日志内容如下:
可以看到,容器在创建时就报错。百度了一圈,原因都指向:IP被暂用,端口被占用。
那么猜测应该就是之前linux上安装的apache2或mysql导致网络端口被占用导致的,那么只需要停止这两个服务就行。
一、linux下停止apache2+mysql
1、停止服务
sudo systemctl stop apache2
sudo systemctl stop mysql
#或者如果您使用的是旧版本的 Ubuntu,可能会使用 service 命令:
#sudo service mysql stop
#sudo service apache2 stop
到这里,我们再次启动docker中的mysql容器,应该就可以启动:
docker start mysql01
执行后,事与愿违,查看容器日志,还是报之前一样的错误。
2、删除包
如果上面停止服务后还是不能正常启动mysql容器。那么就直接清除所有的apt包
# 1、首先查看mysql相关的包有哪些?
apt list --installed | grep mysql
# 2、删除所有的mysql包
apt remove --purge mysql-server mysql-client mysql-common
# 3、首先查看apache2相关的包有哪些?
apt list --installed | grep apache2
# 4、删除所有的apache2包
apt remove --purge apache2-bin apache2-data apache2-utils
删除完成后,可以再次查看包,看看是否还有遗留,正常应该是没有剩余包了:
apt list --installed|grep mysql
apt list --installed|grep apache2
3、启动mysql容器
执行完1、2两个步骤后,再次启动mysql容器时,已经正常启动。
docker start mysql01 #【mysql01】是容器名,这里也可以写容器id
docker logs -f -t --tail 10 mysql01 # 查看容器执行日志
这时查看容器日志,可以看到已经启动正常:
二、window下停止apache2+mysql
打开服务,然后找到之前占用端口的mysql
服务,并停止。
然后再启动我们需要启动的mysql
服务。