运行环境:

操作系统:centos

docker:1.13.1

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

执行上面命令启动mysql时无法启动,使用

docker run -p 3306:3306 --name mymysql  -it -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

使用-it模式启动也会直接退出,通过docker logs  退出的mysql容器id返回下面的提示信息:

chown: cannot read directory '/var/lib/mysql/': Permission denied

解决方案:

Centos7安全Selinux禁止了一些安全权限,导致mysql和mariadb在进行挂载/var/lib/mysql的时候会提示

logs命令查看,发现提示信息是:chown: changing ownership of ‘/var/lib/mysql/....‘: Permission denied

解决方法有三个:

1.在docker run中加入 --privileged=true  给容器加上特定权限,如下

docker run --privileged=true -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d  mysql:5.7

2.关闭selinux csdn

3.在selinux添加规则,修改挂载目录

 

笔者使用的是第1种解决方案

 

参考文章:https://www.jianshu.com/p/bccda875e7a5

Logo

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

更多推荐