今天在做项目的时候,使用docker 拉取mysql:5.7并创建容器运行时,发现容器是创建起来了但是并没有运行起来。如下图:

出现了闪退的情况 

然后我查了一下mysql日志:

命令如下:

 docker logs --tail 50 --follow --timestamps mysql

 具体错误如上:Can‘t read dir of ‘/etc/mysql/conf.d/

出现这个的原因是:因为Centos7安全Selinux禁止了部分安全权限,导致mysql和mariadb在进行挂载/var/lib/mysql的时候会提示上面的信息

所以真正解决该问题的方法就是:既然不能read取到需要都的文件,那我们就给这个目录及文件创建出来:命令如下:

sudo mkdir /etc/mysql/conf.d

但是可能很多人又会出现以下错误:

 原因是mysql目录不存在
此时应加上参数-p,即没有找到此目录就自动创建:

sudo mkdir -p /etc/mysql/conf.d

然后再使用如下命令创建容器并运行:

sudo docker run --privileged=true \
 -p 3306:3306 --name mysql \
 -v /mydata/mysql/log:/var/log/mysql \
 -v /mydata/mysql/data:/var/lib/mysql \
 -v /mydata/mysql/conf:/etc/mysql/conf.d \
 -e MYSQL_ROOT_PASSWORD=root \
 -d mysql:5.7

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐